我知道翻转 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/