66问答网
所有问题
c语言中为什么会出现正数加正数是负数的情况
如1+2=-48
举报该问题
推荐答案 推荐于2016-12-02
这和C语言中数据的储存有关。C语言中数据的储存空间是有限的,比如说整型数据,占四个字节,从而整型数是有范围的,从-2^31+1到2^31,正负号根据二进制数第一位决定。并且运算是以二进制来进行的,当两个数加和超出范围时,自动舍去超出的位数(二进制),所以当然可能两个很大的正数相加等于负数咯。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://66.wendadaohang.com/zd/i2UsxvvU.html
其他回答
第1个回答 2009-02-15
如果涉及非常大的数,有可能会溢出.C语言最大可显示65535,即2^16-1;最高位(二进制第16位)为1表示负数.如果两数的和大于65535,则只能显示负数.
如果1+2=-48,这肯定不是相加的结果.你可能调用了其它的函数.
第2个回答 2009-02-15
两个正数相加的和越界了
相似回答
C语言正数
相加变
负数
答:
编译器的问题
。有可能你的编译器int类型是16位的。你可以把你的sum类型定义成long试一试。
C语言中
让两个正的int型变量相加的程序
为什么
运行结果
会出现负数
?
答:
因为int是有最大限制的
,当相加的结果超出这个限制之后,(就是所谓的溢出),最高位可能会变为1,也就是表示负数,所以结果为负数
一道关于序列计算的汇编程序中有地方不懂
答:
JNS JUMP;JNS判断Bi(因为DL中暂存Bi)是正数还是负数,JNS说明没有符号,则说明Bi是正数,又因为是有溢出才执行到这条条件转移指令的,一个正数加一个负数肯定不会溢出,所以就说明是“一个
正数加上
一个正数,结果
为负数的
溢出
情况
”,转JUMP(AH已为00H)MOV AH,0FFH;没转到JUMP就说明Bi为负数...
...+00000001=10000000,两个
正数
相加等于
负数的情况
?
答:
会啊 这个应该算是加法的溢出
C语言中的
if语句 这个程序
为什么
输入
正数
和
负数
都显示的是-1啊,怎 ...
答:
你试下这样子 include<stdio.h> void main (){ int x,y;scanf("%d",&x);if(x>=0){if(x>0)y=1 ;else y=0;} else y=-1;printf("x=%d,y=%d\n",x,y);
C语言
问题
答:
你应该是理解错了,以为对于负数,最高位1(第八bit)表示负数,其余位数按正数算出来前面加个
负号
就是了。你可以简单验证一下,对于这样
的负数
,比如-1,
加上正数
1会等于0吗?显然是等于-2(按照你的看法)。先不从逻辑上讲,对于有符号数(最高为1表示负数),一个数的负数是其补码+1,在这样的...
大家正在搜
为什么c语言输出的是负数
0是正数还是负数,为什么
c语言怎么把负数变正数
c语言如何把负数化为正数
c语言把负数变成正数
c语言负数变正数
c语言负数大于正数
c语言判断正数负数
c语言负数和正数比较大小
相关问题
在C语言中执行两个正数相加结果怎么会是负数呢
C语言中让两个正的int型变量相加的程序为什么运行结果会出现...
c语言正数相加减乘除为啥会出现负数
C语言正数相加变负数
C语言中的if语句 这个程序为什么输入正数和负数都显示的是-...
C语言如何把负数转化为正数
C语言 输入负数的时候出来的结果跟正数一样
请问C语言中我想把一个正数变为负数怎么变 例如:9变成-9