Reg*_*lez 6 c standards integer
直到最近,我认为'long'与'int'是一回事,因为历史原因和台式机处理器都至少有32位(并且只有那种"欺骗"才有麻烦,因为它只在32位机器上开发).
读到这个,我发现,实际上,C标准将int类型定义为至少为int16,而'long'应该至少为int32.
实际上在列表中
总是存在非空交叉点,因此无论编译器和平台选择何种实现,都是重复的.
为什么标准委员会在char/short/int/long(或int_k,int_2k,int_4k,int_8k)之类的简单介绍中引入了额外的类型?
这是出于历史原因,例如,gcc xx将int实现为32位而另一个编译器将其实现为16,或者是否存在我缺少的真正技术原因?
中心点int/unsigned不仅仅是char, short,int, long, long long梯形的整数大小的另一步. int很特别.它是所有较窄类型提升的大小,因此通常在给定处理器上"最佳"工作.所以应该int匹配short,long或者明显地楔入short/long高度平台依赖.
C被设计成容纳一个宽范围的处理器.鉴于C已有40多年的历史,这是成功战略的证明.