主题:[讨论]菜鸟求助,int数据类型的宽度问题
很久没有写过C代码了,今天写了一下,胡乱间吓我一跳:
我首用的是VC6的APPWizard建了一个基于对话框的应用程序框架,然后在里面写了两行很弱智的代码
int i=32768;
MessageBox("%d",i);
结果显示的是32768,居然没发生溢出。我再把32768改成2147483648时,才发生溢出。
用2147483647不会发生溢出。
我跑去查了一下N年前我的学习笔记:
ANSI标准定义的数据类型
int 16比特 -32767 到 3267
long int 32比特 -2147483647 到 2147483647
问题:为什么现在的int类型数据宽度变成了原来的long型的宽度?
是与计算机硬件的问题,还是操作系统的问题,还是编译程序的问题?或是其它???
恳请高手们不吝赐教,不胜感谢
我首用的是VC6的APPWizard建了一个基于对话框的应用程序框架,然后在里面写了两行很弱智的代码
int i=32768;
MessageBox("%d",i);
结果显示的是32768,居然没发生溢出。我再把32768改成2147483648时,才发生溢出。
用2147483647不会发生溢出。
我跑去查了一下N年前我的学习笔记:
ANSI标准定义的数据类型
int 16比特 -32767 到 3267
long int 32比特 -2147483647 到 2147483647
问题:为什么现在的int类型数据宽度变成了原来的long型的宽度?
是与计算机硬件的问题,还是操作系统的问题,还是编译程序的问题?或是其它???
恳请高手们不吝赐教,不胜感谢