- char存储大小1字节,值范围-128~127;
- unsigned char存储大小1字节,值范围0~255;
- short存储大小2字节,值范围-32768~32767;
- unsigned short存储大小2字节,值范围0~65535;
- int——
16位系统存储大小2字节,值范围-32768~32767,
32、64位系统存储大小4字节,值范围-2147483648~2147483647;
- unsigned int——
16位系统存储大小2字节,值范围0~65535,
32、64位系统存储大小4字节,值范围0~4294967295;
- long——
16、32位系统存储大小4字节,值范围-2147483648~2147483647,
64位系统存储大小8字节,值范围-9223372036854775808~9223372036854775807;
- unsigned long——
16、32位系统存储大小4字节,值范围0~4294967295,
64位系统存储大小8字节,值范围0~18446744073709551615;
- float存储大小4字节,值范围1.175494351*10^-38~3.402823466*10^38;
- double存储大小8字节,值范围2.2250738585072014*10^-308~1.7976931348623158*10^308;
- long long存储大小8字节,值范围-9223372036854775808~9223372036854775807;
- unsigned long long存储大小8字节,值范围0~18446744073709551615;
- long double——
16位系统存储大小8字节,值范围2.22507*10^-308~1.79769*10^308,
32位系统存储大小12字节(有效位10字节,为了对齐实际分配12字节),值范围3.4*10^-4932 到 1.1*10^4932,
64位系统存储大小16字节(有效位10字节,为了对齐实际分配16字节),值范围3.4*10^-4932 到 1.1*10^4932;
- 指针——
16位系统存储大小2字节,
32位系统存储大小4字节,
64位系统存储大小8字节。
- 结构体的大小是其成员大小之和,但受到字节对齐的影响。这个对齐规则可以因编译器和编译选项而异,通常是按照机器字长的倍数来对齐。
- `void*` 类型:在32位系统上,`void*` 类型占用4字节,而在64位系统上,`void*` 类型占用8字节。
- `size_t` 类型:在32位系统上,`size_t` 类型通常占用4字节,而在64位系统上,`size_t` 类型通常占用8字节。`size_t` 类型用于表示对象大小或数组索引。
#include <stdio.h> int main() { printf("Size of char: %d bytes\n", sizeof(char)); printf("Size of short: %d bytes\n", sizeof(short)); printf("Size of int: %d bytes\n", sizeof(int)); printf("Size of long: %d bytes\n", sizeof(long)); printf("Size of long long: %d bytes\n", sizeof(long long)); printf("Size of float: %d bytes\n", sizeof(float)); printf("Size of double: %d bytes\n", sizeof(double)); printf("Size of long double: %d bytes\n", sizeof(long double)); return 0; }
结果:
Size of char: 1 byte Size of short: 2 bytes Size of int: 4 bytes Size of long: 4 bytes Size of long long: 8 bytes Size of float: 4 bytes Size of double: 8 bytes Size of long double: 16 bytes