各种类型数据位数:

已测试:
| 类型 | 32位占用字节 | 32位取值范围 | 64位占用字节 | 64位取值范围 |
| bool | 1个字节 | 0/1。 | 1个字节 | 0/1。 |
| BOOL | 4个字节 | TRUE/FALSE/ERROR。 | 4个字节 | TRUE/FALSE/ERROR。 |
| char | 1个字节 | -128~127 | 1个字节 | -128~127 |
| unsigned char | 1个字节 | 0~255 | 1个字节 | 0~255 |
| short | 2个字节 | -32768~32767 | 2个字节 | -32768~32767 |
| unsigned short | 2个字节 | 0~65535 | 2个字节 | 0~65535 |
| int | 4个字节 | -2147483648~2147483647 | 4个字节 | -2147483648~2147483647 |
| unsigned int | 4个字节 | 0~4294967295 | 4个字节 | 0~4294967295 |
| long | 4个字节 | -2147483648~2147483647 | 8个字节 | -9223372036854775808~9223372036854775807 |
| unsigned long | 4个字节 | 0~4294967295 | 8个字节 | 0~18446744073709551615 |
| long long | 8个字节 | -9223372036854775808~9223372036854775807 | 8个字节 | -9223372036854775808~9223372036854775807 |
| unsigned long long | 8个字节 | 0~18446744073709551615 | 8个字节 | 0~18446744073709551615 |
| pointer(指针) | 4个字节 | 8个字节 | ||
| 浮点数32位与64位占用字节数和取值范围一致 | ||||
| 类型 | 位数(字节数) | 有效数字 | 数值范围 | |
| float | 32(4) | 6~7 | -3.4*10^38~+3.4*10^38 | |
| double | 64(8) | 15~16 | -1.7*10^-308~1.7*10^308 | |
| 注意,C语言标准没有精确定义long double的大小,而是留给编译器具体实现的自由。真正开发过程中很少会用long double类型。 | ||||
关于double的超大取值范围:
因为double类型是浮点数,这种类型可以用科学记数法表示,所以表示范围非常大。
但是,使用可浮点数的代价就是损失了精度。它把这部分精度用于指数的表示。所以double类型的优点就是数据范围大,缺点是精度不足,大概只有15~16位有效位数。
注意:
占多少个字节是由编译器决定的,ANSI标准定义int是占2个字节.
TC是按ANSI标准的,它的int是占2个字节的.
你可以在TC里试.printf("%d",sizeof(int));结果是2;
但是在VC里,一个int是占4个字节的,在VC里面,
printf("%d",sizeof(int));
cout<<sizeof(int);结果都是4.
不同的编译器,规定也不一样.
float,double也是一样的,在不同的编译器里,占的字节是不一样的
本文详细介绍了32位系统中各种数据类型的字节占用情况及取值范围,包括整型、布尔型、字符型、浮点型等,并特别说明了指针和double类型的特性。文中还解释了不同编译器对于相同数据类型的不同字节占用。
4575

被折叠的 条评论
为什么被折叠?



