C语言判断两个整数相加会不会溢出

2014-11-24 08:10:21 · 作者: · 浏览: 2

实际上,大多数电脑中,整数都是用补码来表示的。发生溢出不会报警,只是将最高位直接截断。


/*习题2.30
C语言
开发环境VC++6.0*/


#include


int taddOK(int, int);


void main(){
int x, y;


printf("Input two integers:\n");
scanf("%d %d",&x, &y);


printf("%d\n",taddOK(x,y));

}


/*Determine whether arguments can be added without overflow */
int taddOK(int x, int y){
int sum = x + y;
int negOverflow = x < 0 && y < 0 && sum >= 0;
int posOverflow = x >= 0 && y >= 0 && sum <= 0;


return !negOverflow && !posOverflow;
}