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位的。