5
为什么未定义整数溢出定义行为,但没有定义整数溢出?
C和C ++标准都很好地定义了无符号整数溢出。例如,C99标准(§6.2.5/9)指出 涉及无符号操作数的计算永远不会溢出,因为无法用所得的无符号整数类型表示的结果的模数要比该所得类型可以表示的最大值大一模。 但是,两个标准都指出有符号整数溢出是未定义的行为。同样,根据C99标准(§3.4.3/1) 未定义行为的一个示例是整数溢出时的行为 是否存在这种差异的历史原因(甚至更好!)是技术原因?