【发布时间】:2014-03-05 00:40:14
【问题描述】:
例如,在 2 和 1 的补码中,INT_MAX*-1 都是有效数字。这是有保证的吗?还有其他保证吗?例如,在任何架构上 INT_MIN 可以是 -1 还是 0?关于 (INT_MAX + INT_MIN) 有什么我们可以知道的吗?我们甚至可以知道 (INT_MAX + INT_MIN) 不会导致未定义的行为吗?
【问题讨论】:
-
由于最小值和最大值的符号相反(见附件 E),它们的总和必须是可表示的。附件 E 还说
INT_MIN不能是 -1,因为它最多只能是 -32767。 -
INT_MIN 必须小于或等于 -32767。所以不,它不能是 -1 或 0。
标签: c standards signed integer-overflow