is related to the machine word length and compiler:
Therefore, the width of the int,long int,short int may vary depending on the compiler. But there are several ironclad principles (Ansi/iso):
1 sizeof (Shortint) <=sizeof(int2sizeof(int ) <=sizeof(longint3short4 a long int should be at least 32 bits.
Unsigned is an unsigned meaning.
For example:
16-bit compilers
Char : 1 bytes Char*(pointer variable): 2 bytes short int : 2 bytes intint : 2 bytes float : 4 bytes Double : 8 bytes Long : 4 bytes Long Long a long: 4 bytes
32-bit compiler (see here, compared with 16-bit machine, 64-bit machine, bold type is different, the rest is the same)
Char: 1 bytesChar* (i.e. pointer variable): 4 bytes (32-bit addressing space is 2^ +, which is 32 bits, which is 4 bytes. The same 64-bit compiler) (16-bit machine, 32-bit machine, 64-bit machine are different) Short int: 2 bytesint: 4 bytes (16-bit machine is 2b,32 bit &64 bits is 4B) unsignedint: 4 bytes (16-bit machine is 2b,32 bit &64 bits is 4B)float: 4 bytesDouble: 8 bytesLong: 4 bytes (16 bits &32 bit is 4b,64 bit is 8B)Long Long: 8 bytes UnsignedLong: 4 bytes ( -&32 bit is 4b,64 bit is 8B)
64-bit compilers
Char : 1 bytes Char*(pointer variable): 8 bytes short int : 2 bytes intint : 4 bytes float : 4 bytes Double : 8 bytes Long : 8 bytes Long Long a long: 8 bytes
In C, the number of bytes of data in double, long, unsigned, int, char type