C或者C++内置的整数数据类型的长度是很含糊的。这种含糊性会导致难以预料的意外和后果,尤其是在不同CPU和不同编译器之间移植嵌入式代码的时候。
下面是内置的整数类型的基本规则:
* char是8位的或者更长。基本的无限制的char可以缺省为有符号的或者是无符号的;具体选择哪种就要看编译器了。
* short至少是16位的,而且要不大于int的长度。
* int至少是16位的,而且要不小于short的长度。它通常是机器整数的自然长度,典型的是16位或者32位。尽管ANSI的C语言要求int是16位的或者更长,但是有些用于小型处理器的非常规嵌入式编译器允许使用8位的int。
* long不少于int的长度。它通常是32位或者64位的。
下面是内置的整数类型的基本规则:
* char是8位的或者更长。基本的无限制的char可以缺省为有符号的或者是无符号的;具体选择哪种就要看编译器了。
* short至少是16位的,而且要不大于int的长度。
* int至少是16位的,而且要不小于short的长度。它通常是机器整数的自然长度,典型的是16位或者32位。尽管ANSI的C语言要求int是16位的或者更长,但是有些用于小型处理器的非常规嵌入式编译器允许使用8位的int。
* long不少于int的长度。它通常是32位或者64位的。
本文详细介绍了C和C++内置整数数据类型的长度及其不确定性,包括char、short、int和long等基本整型的位宽规定及可能的变化范围。
1344

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



