孟非的小面加盟官网:C语言问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 00:57:05
在BC和VC中,int类型的字节不同,BC是2个字节,VC是4个字节,这样就会出现计算结果不一样。
请看这道题目。
#include<stdio.h>
void main()
{
int a=65135;
double i=8256,67;
a=(int)i+a;
printf("\n%d,%f",a,i);

}
vc的输出结果是:73391,8256.670000
BC的输出结果是:7855,8256,670000
这个a的值怎么会相差这么大?怎么计算的?

vc中:
a=(int)i+a=8256+65135=73391;
bc中:
因为int形占两个字节,16位,最大可以存储的数为:
256*256-1=65535;
所有的数据转化为补码存储,并舍去溢出位,73391在16位中存储为:10001111010101111,补码为:01110000101010001,舍去溢出位1110000101010001,再求补还原为0001111010101111,就是7855

还有什么问题吗?