一种说法,整型所占空间大小和CPU相关

但是 MinGW 的64 位gcc编译器下,long 是32位的。查了资料,原来C标准没有规定long必须是64位的。
C标准只规定了 int 的长度不低于 short,long 的长度不低于 int。实际上,C保证short至少有16位长,long至少有32位长,long long 至少64位长。
#include <stdio.h>
#define SZ(t) printf("sizeof("#t"):\t%zd\n", sizeof(t));
int main(int argc, char * argv[]){
SZ(char);
SZ(short);
SZ(int

C语言标准未明确规定long必须为64位,仅保证short至少16位,long至少32位,long long至少64位。MinGW的64位gcc下,long仍为32位。指针长度等于机器字长,float和double在不同CPU上位数固定,int至少16位。C标准中float约6~7位精度,double通常提供至少13位有效数字。
最低0.47元/天 解锁文章
2058

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



