作业帮 > 综合 > 作业

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);
}
一般的数据都没什么问题 要是输入的数过大的话就会出现奇怪的结果  比如负数什么的 以下是截图


因为int是有最大限制的,当相加的结果超出这个限制之后,(就是所谓的溢出),最高位可能会变为1,也就是表示负数,所以结果为负数
再问: 那第二个截图的结果又何解 ? 结果不是负数 我用计算器算一遍结果是14575147 和 程序结果6155貌似没什么联系啊?
再答: 你先把那两个数转换为二进制,然后相加,再取其结果的后四个自己(如果int是4字节),最高位表示符号(即正负),后面的是数值,自己算一下把