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

来源:百度知道 编辑:UC知道 时间:2024/06/21 17:13:15
如1+2=-48

这和C语言中数据的储存有关。C语言中数据的储存空间是有限的,比如说整型数据,占四个字节,从而整型数是有范围的,从-2^31+1到2^31,正负号根据二进制数第一位决定。并且运算是以二进制来进行的,当两个数加和超出范围时,自动舍去超出的位数(二进制),所以当然可能两个很大的正数相加等于负数咯。

如果涉及非常大的数,有可能会溢出.C语言最大可显示65535,即2^16-1;最高位(二进制第16位)为1表示负数.如果两数的和大于65535,则只能显示负数.
如果1+2=-48,这肯定不是相加的结果.你可能调用了其它的函数.

两个正数相加的和越界了