int型字长问题:
int 类型并不是固定长度的,它会随着平台改变。
long int型至少应该和int型一样长,而int型至少应该和short int一样长。
① C/C++规定int字长和机器字长相同;
② 操作系统字长和机器字长未必一致;
③ 编译器根据操作系统字长来定义int字长; http://www.programfan.com/club/showbbs.asp?id=145906
由上面三点可知,在一些没有操作系统的嵌入式计算机系统上,int的长度与处理器字长一致;有操作系统时,操作系统的字长与处理器的字长不一定一致,此时编译器根据操作系统的字长来定义int字长:“比如你在64位机器上运行DOS16系统,那么所有for dos16的C/C++编译器中int都是16位的;在64位机器上运行win32系统,那么所有for win32的C/C++编译器中int都是32位的”。(CPU的“字长”是指其一条指令/一次运算可以处理的数据的最大宽度。http://www.cublog.cn/u/23458/showart.php?id=175995)
另外,对于整型的数值范围,每个编译器里面都有一个标准头文件:limits.h,这个头文件定义了一些宏,这些宏表示该编译器使用的所有数据类型的范围,编程过程中 使用这些宏就行了。例如你想要的int的最大值可以使用宏INT_MAX,最小值使用INT_MIN,而无符号则可以使用UINT_MAX,还有其它类型 的。你自己把这个头文件打开看看就知道了。