我前几天正在阅读C标准,并注意到与有符号整数溢出(未定义)不同,无符号整数溢出是明确定义的.我已经看到它在很多代码中用于最大化等等但是考虑到有关溢出的voodo,这被认为是很好的编程习惯吗?无论如何不安全吗?我知道许多像Python这样的现代语言都不支持它 - 相反,它们继续扩展大数字的大小.
我已经在很多地方读过,整数溢出在C中定义得很好,与签名对应物不同.
下溢是一样的吗?
例如:
unsigned int x = -1; // Does x == UINT_MAX?
Run Code Online (Sandbox Code Playgroud)
谢谢.
我不记得在哪里,但我在某处读到无符号整数类型的算术是模块化的,所以如果是这种情况那么-1 == UINT_MAX mod(UINT_MAX + 1).