第32343题 单选题
给定两个int类型的变量a和b,均为合法的int取值(范围-2^31 ~ 2^31-1),要判断a + b的结果是否会发生int溢出,以下哪个判断条件是正确的?

提示:int为32位有符号整数,溢出属于C++未定义行为,因此不能直接计算a + b后判断结果是否超出范围。

A

if (a + b > INT_MAX || a + b < INT_MIN) return true;

B

if (a > 0 && b > 0 && a > INT_MAX - b) return true; if (a < 0 && b < 0 && a < INT_MIN - b) return true; 其余场景返回false

C

if (abs(a) > INT_MAX / 2 || abs(b) > INT_MAX / 2) return true;

D

只要a和b同号就一定会溢出,直接返回true

程序运行统计
暂无判题统计
提交0次 正确率0.00%
答案解析