如果 a 是 int 类型的变量,下列哪个表达式的值一定为 true?( )
看到 a±1000 先想中间值是否越界;看到 a*2 先想溢出风险;看到&1 先想奇偶性。
易混 B:以为乘除抵消就安全,忽略 int 乘法先溢出再除;易混 C:只记奇数成立,忘偶数时 (a&1)==0;易混 D:误把位或当加法。
考点:整数溢出|位运算逻辑
A 恒真:加减互逆,中间值 a+1000 仍在 int 范围,不会溢出。 B 不恒真:a*2 可能溢出(如 INT_MAX),再除 2 无法还原。 C 不恒真:仅奇数成立,偶数时 (a&1)==0。 D 不恒真:| 是位或而非加法,奇数时左右不等,偶数时多数也不等。