c++ - 翻转 bool : performance comparison of x=! x 与 x^=1

标签 c++ c optimization assembly

我知道翻转 bool 值的两种技术:

x = !x

x ^= 1

我更喜欢第二种,就像我更喜欢 x++ 而不是 x+=1 而不是 x=x+1 一样。

但是它们能保证生成相同的汇编代码吗?

如果不是,是否有理由支持一个而不是另一个?

最佳答案

从来没有任何关于相同汇编代码的保证。是的,给定 bool x,它们都做同样的事情。是的,这意味着它们很可能是相同的。

以不寻常的方式编写表达式可能会使它们更快,这是一个常见的谬误。避免与任何基于此类想法养成习惯的人一起工作。

x = ! x 更清晰,因为 ! 是根据 bool 值定义的。

关于c++ - 翻转 bool : performance comparison of x=! x 与 x^=1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22657304/

相关文章:

c++ - 在循环中顺序遍历成员变量

c++ - 通过惰性求值使 Meyers 的 Singleton 线程安全快速

c++ - 将几个 ROI 发送到另一个方法/函数来计算直方图?

c - 如何获取 MagickWand 持有的图像数量?

algorithm - 如何优化查找 O(n^2) 以下的所有 session 冲突

c++ - 在不使用 modf() 的情况下获取 float 的小数部分

linux - 为什么这段代码不会置换值 Z?

c - 这个 C 结构中是否添加过填充?

database - Hierarchical Hibernate,执行了多少查询?

c# - 我的抖动算法 super 慢