在C中组合逻辑运算符

时间:2016-12-30 19:37:29

标签: c expression logical-operators

我想知道组合逻辑运算符的代价是多少?结合它们的最佳方法是什么?

例如: 在优化方面,遵循两个陈述有什么区别?

1) if((!x || !y || !z) && (a != b)) 
2) if(!( x && y && z) && (a != b))

我从同行那里听说你应该比ORing操作更频繁地使用ANDing操作。我是C语言的新手。请有人帮我理解这一点。任何材料或链接也会有所帮助。

2 个答案:

答案 0 :(得分:3)

它们都是相同的,不应影响性能。根据{{​​3}},它们是彼此的等价物。

答案 1 :(得分:3)

除非此代码位于代码的热门路径中,否则请始终选择对未来读者最合理的表单。

如果 在热路径中,请编译它们并查看程序集。让你看到许多编译器和CPU的输出的一个好工具是godbolt

以下是测试您的方案的示例:fiddle

如您所见,指令数量相同。