C语言中让两个正的int型变量相加的程序为什么运行结果会出现负数?
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/26 06:01:47
C语言中让两个正的int型变量相加的程序为什么运行结果会出现负数?
如题 程序如下
#include "stdio.h"
void main()
{
int n1,n2,total;
printf("This program adds two numbers.\n");
printf("1st number?\n");
printf("n1= ");
scanf("%d",&n1);
printf("2nd number?\n");
printf("n2= ");
scanf("%d",&n2);
total=n1+n2;
printf("The total is %d\n",total);
}
一般的数据都没什么问题 要是输入的数过大的话就会出现奇怪的结果 比如负数什么的 以下是截图
如题 程序如下
#include "stdio.h"
void main()
{
int n1,n2,total;
printf("This program adds two numbers.\n");
printf("1st number?\n");
printf("n1= ");
scanf("%d",&n1);
printf("2nd number?\n");
printf("n2= ");
scanf("%d",&n2);
total=n1+n2;
printf("The total is %d\n",total);
}
一般的数据都没什么问题 要是输入的数过大的话就会出现奇怪的结果 比如负数什么的 以下是截图
因为int是有最大限制的,当相加的结果超出这个限制之后,(就是所谓的溢出),最高位可能会变为1,也就是表示负数,所以结果为负数
再问: 那第二个截图的结果又何解 ? 结果不是负数 我用计算器算一遍结果是14575147 和 程序结果6155貌似没什么联系啊?
再答: 你先把那两个数转换为二进制,然后相加,再取其结果的后四个自己(如果int是4字节),最高位表示符号(即正负),后面的是数值,自己算一下把
再问: 那第二个截图的结果又何解 ? 结果不是负数 我用计算器算一遍结果是14575147 和 程序结果6155貌似没什么联系啊?
再答: 你先把那两个数转换为二进制,然后相加,再取其结果的后四个自己(如果int是4字节),最高位表示符号(即正负),后面的是数值,自己算一下把
c语言中为什么会出现正数加正数是负数的情况
以下程序的运行结果为什么会是3啊,main() { int a=2,b=-1,c=3; if(a
c语言 产生一个随机数,如何让它每一次运行出现不同的随机数结果?
在下列C语言程序中,可以用做变量名的是 A) 1 B) a1 C) int D) *p
如何用C语言编程序求出两个大整数之积?要求程序可以应对输入的两个数范围超过long int变量允许的范围.
两数加号相加,结果为正数?两个负数相加,结果为负数?两个异号相加的结果是会正数还是负数?
运行下面的C语言程序,根据运行结果,可以说明什么?
用C语言编写一段程序,求两个集合的笛卡尔乘积.并对运行结果截图.
C语言,阅读下列程序,则在执行后,程序的运行结果为 ?
C语言中int型变量的有关例题和详细的解题步骤
用C语言编写程序:两个100位的数字相加,输出计算结果,并算出计算结果中0的个数.用数组定义这两个数
霍夫曼编码 c语言程序 求能运行的能算出结果的