c++ - 为什么将超出范围的值分配给有符号类型的对象的结果在 C++ 中未定义?

标签 c++ undefined-behavior unsigned signed

<分区>

如果我们为 unsigned 类型的对象分配一个超出范围的值,结果是该值的余数对目标类型可以容纳的值的数量取模。这是自然的。但是,如果我们将超出范围的值分配给 signed 类型的对象,则结果为 undefined。为什么 C++ 标准没有定义这种行为的确切结果,例如 unsigned 情况???

最佳答案

因为某些处理器会在算术覆盖时生成硬件异常。为了定义行为,C++ 代码必须在几乎每条 alu 指令之间插入一个陷阱,从而减慢程序的速度。

关于c++ - 为什么将超出范围的值分配给有符号类型的对象的结果在 C++ 中未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42760688/

相关文章:

c++ - 从文件中读取数据 C++

c++ - 为什么这是一个未定义的行为?

c++ - 未定义、未指定和实现定义的行为

在 C 中将有符号值转换为无符号值

C long unsigned int 数字操作

c++ - 从 BST 中删除唯一的节点

c++ - CUDA & VS2010问题

python - 如何在Python中将整数转换为无符号32位?

c++ - 如何在 C 或 C++ 的 O(n) 中删除数组中的重复元素?

c++ - 增量变量是否可在平局调用中重用?