How variable sizes are related to processors arhitecture?
Even if your 8-bit processor only supports data handling at 8 bits, the compiler will handle all the necessary stuff for a 16-bit addition and passing on data, so the size in bits of int, short or others are purely based on your compilers settings.

Normally you will find this information somewhere in the compiler manual.

To get out of this trouble it is a good practice not to use the compiler defined types directly. You might want to include stdint.h (if available) which provides clearly named datatypes such as uint8_t which is an unsigned integer with 8 bits.

If you cannot use this, create your own version of it and create a header with something along those lines (or get a complete stdint.h and adapt it to your compiler):

typedef unsigned char uint8_t

where you of course have to check your compiler manual to get the right compiler types.

This wikibook gives a nice explanation of stdint.h. 

There are some problems though, as especially for embedded devices not all data types are supported by all compilers. 64-bit data types are often missing, so there are two possible outcomes: either your program won't compile anymore (I think that is the good case) or someone has typedefed the 64-bit data type to a smaller one and your program might return unexpected results because of that.

In my opinion if a data type is not supported it should lead to a compilation error, so the programmer is actually aware of the problem before hitting it in the system.

As an example on where to find that information for a compiler:

The IAR Embedded Workbench comes with a bunch of documentation, for this kind of information, you have to look in the Development Guide, and there under the Reference Information you will find the Data representation. Under that point you will find all necessary details to handle data correctly. Alignment, Size and Range are all given there.

Data type              Size      Range             Alignment
bool                   8 bits    0 to 1            1
char                   8 bits    0 to 255          1
...
signed long long       64 bits  -2^63 to 2^63-1    8
unsigned long long     64 bits   0 to 2^64-1       8