如果条件x> 3 ||,则缩短 y> 3 || z> 3

Syn*_*nor 0 optimization

有没有办法做这种情况:

if ( x > 3 || y > 3 || z > 3 ) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我在考虑一些按位操作但却找不到任何东西.

我在Google上搜索过,但很难找到与这类基本问题相关的内容.谢谢!

编辑 我在一般编程中思考.根据特定的语言会有所不同吗?比如C/C++,Java ......

Joh*_*136 6

你有什么是好的.假设C/C++或Java:

  • 意图很清楚
  • 短路优化意味着只要任何一个部分为真,表达式就会成立.

查看第二点 - 如果有的话x,y或者z更可能是这样>3,那么将它们放在表达式的左边,这样它们首先被评估,这意味着其他可能根本不需要进行评估.

为了论证的缘故,如果你必须进行逐位检查x|y|z > 3,但通常不会减少,所以它(可能是*)总是2位运算和比较,其他方式可以和1比较一样快.

(*这是语言律师到达的地方添加评论为什么这个编辑是错误的,并且可以优化按位版本;-)

这里有一条评论(现已删除),"新程序员不应该担心这种优化水平" - 这是100%正确的.写下易于理解,工作代码,然后在你知道它"太慢"之后尝试从中挤出性能.