7
使用无符号而不是带符号的int更有可能导致错误吗?为什么?
在《Google C ++样式指南》的“无符号整数”主题上,建议 由于历史原因,C ++标准还使用无符号整数来表示容器的大小-标准主体的许多成员认为这是一个错误,但实际上目前无法修复。无符号算术不对简单整数的行为进行建模,而是由标准定义以对模块化算术进行建模(围绕上溢/下溢进行环绕),这一事实意味着编译器无法诊断出大量的错误。 模块化算法有什么问题?这不是unsigned int的预期行为吗? 该指南指的是哪种错误(重要的类)?错误溢出? 不要仅使用无符号类型来断言变量是非负数。 我可以想到在未签名的int上使用有符号的int的原因之一是,如果它确实溢出(变为负数),则更易于检测。