int c语言 极 极 极 !!!

来源:百度知道 编辑:UC知道 时间:2024/07/01 06:42:11
#include <stdio.h>

void main(){
int a,b;
a=32767;
b=a+1;
printf("%d,%d",a,b);
}

应该输出32767,-32768;
我的电脑上为什么输出 32767,32768??????????
并且给int 赋予更大的值也不溢出?????

首先你要明白 int的位数是不固定的,有的默认为16位(比如tc2.0), 有的默认32位(绝大多数的编译器),还有的就成64位了(比如 VS的64位版本)。

如果你的程序对这些有依赖,请使用精确指定的类型,比如你的程序想要的是int的16位的,那么就用short吧,这样什么编译器的结果都是一样的(已经帮你在tc2.0和vs2008里试过了)

#include <stdio.h>

void main(){
short a,b;
a=32767;
b=a+1;
printf("%d,%d",a,b);
}

跟编译器有关
加入你的编译器是VC6.0等比较高级的编译软件 就会出现这种情况
这类软件把int 默认为 long int

加入想到达你需要的效果
把int 改为 short int

PS :建议用
int main()
{
......
return 0;
}

int可能是2字节,也可能是4字节,具体值可以用sizeof查看,你那估计是4字节。你可以用short试一下。
再说,整形最大值加1等于最小值不是对所有编译器都成立的。 溢出后的值是未定义的。

是不是因为现在都是64位机了
如果32767不再是整数临界值了,那么就是正确的

你定义的是int 类型 超过数值的范围了