c语言中为什么会出现正数加正数是负数的情况

如1+2=-48

这和C语言中数据的储存有关。C语言中数据的储存空间是有限的,比如说整型数据,占四个字节,从而整型数是有范围的,从-2^31+1到2^31,正负号根据二进制数第一位决定。并且运算是以二进制来进行的,当两个数加和超出范围时,自动舍去超出的位数(二进制),所以当然可能两个很大的正数相加等于负数咯。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-02-15
如果涉及非常大的数,有可能会溢出.C语言最大可显示65535,即2^16-1;最高位(二进制第16位)为1表示负数.如果两数的和大于65535,则只能显示负数.
如果1+2=-48,这肯定不是相加的结果.你可能调用了其它的函数.
第2个回答  2009-02-15
两个正数相加的和越界了
相似回答