标签: c expression logical-operators
我想知道组合逻辑运算符的代价是多少?结合它们的最佳方法是什么?
例如: 在优化方面,遵循两个陈述有什么区别?
1) if((!x || !y || !z) && (a != b)) 2) if(!( x && y && z) && (a != b))
我从同行那里听说你应该比ORing操作更频繁地使用ANDing操作。我是C语言的新手。请有人帮我理解这一点。任何材料或链接也会有所帮助。
答案 0 :(得分:3)
它们都是相同的,不应影响性能。根据{{3}},它们是彼此的等价物。
答案 1 :(得分:3)
除非此代码位于代码的极热门路径中,否则请始终选择对未来读者最合理的表单。
如果 在热路径中,请编译它们并查看程序集。让你看到许多编译器和CPU的输出的一个好工具是godbolt
以下是测试您的方案的示例:fiddle
如您所见,指令数量相同。