C程序关于整型数据溢出的几种情况求解
在谭的书上有讲#include <stdio.h>
void main()
{
int a,b;
a=32767;
b=a+1;
printf(“%d,%d”,a,b);
}
这个将b改为long就可得到希望的结果
但我采用
#include <stdio.h>
void main()
{
int a;
long b;
a=32767;
b=a+1;
printf(“%d,%ld”,a,b);
}
所得到的仍然是32767,-32768
如果采用
#include <stdio.h>
void main()
{
int a;
long b;
a=32767;
b=a+1;
printf(“%d,%d”,a,b);
}
结果和上面的一样
采用
#include <stdio.h>
void main()
{
int a,b;
a=32767;
b=a+1;
printf(“%d,%ld”,a,b);
}
结果是a为32767,b的值却是一个很大很奇怪的数
采用
#include <stdio.h>
void main()
{
long int a,b;
a=32767;
b=a+1;
printf(“%d,%d”,a,b);
}
结果也很奇怪 a为32767,b却变成了0
困惑了半天也没想通 所以发到帖吧来寻求明白的人给我点提示 感激不尽!
PS:
我的环境是TC2.0
我用
#include <stdio.h>
void main()
{
int a,b;
a=32767;
b=a+1;
printf("%d,%d\n",a,b);
} 已经得得正确结果 我主要是想了解出现前面几种情况的原因
先在这里谢谢了!