小编Tal*_*Tal的帖子

(A + B + C)≠(A + C + B)和编译器重新排序

添加两个32位整数会导致整数溢出:

uint64_t u64_z = u32_x + u32_y;
Run Code Online (Sandbox Code Playgroud)

如果首先将32位整数中的一个整流或添加到64位整数,则可以避免此溢出.

uint64_t u64_z = u32_x + u64_a + u32_y;
Run Code Online (Sandbox Code Playgroud)

但是,如果编译器决定重新排序添加:

uint64_t u64_z = u32_x + u32_y + u64_a;
Run Code Online (Sandbox Code Playgroud)

整数溢出可能仍会发生.

是否允许编译器进行这样的重新排序,或者我们是否可以相信它们会注意到结果不一致并保持表达顺序不变?

c c++ compiler-construction integer-overflow

110
推荐指数
4
解决办法
9749
查看次数

我什么时候应该使用收音机按钮?

恕我直言的单选按钮应退出.应始终首选ComboBox(下拉列表模式).
下拉列表占用的屏幕空间最小,您可以通过编程方式添加/删除项目.
无需调整任何大小(硬),或禁用不相关的选项(丑陋).

你能想到单选按钮仍然有用的情况吗?

user-interface

6
推荐指数
4
解决办法
4263
查看次数