Que*_*atl -1 c# c++ java if-statement logical-operators
假设我在这样的方法中有一个if语句:
if ( foo() || bar() ) {
return true;
}
Run Code Online (Sandbox Code Playgroud)
在评估是否执行代码之前,或者只要一个条件满足if,就会完全处理这两者foo()和bar()两者?
我询问原因就是我的等价物foo()和bar()方法是相当昂贵的计算功能,而如果foo()单独满足的条件,如果我不想执行bar().因此,我目前的代码是:
if ( foo() ) {
return true;
}
if ( bar() ) {
return true;
}
Run Code Online (Sandbox Code Playgroud)
这是必要的,还是逻辑OR分离函数表现为需要?
&&和||被短路的所有3种语言据我所知,所以如果foo()到求值true,bar()将不会被调用.
5.15逻辑OR运算符[expr.log.or]
1)|| 操作员组从左到右.操作数都在上下文中转换为bool(第4条).如果其任一操作数为true,则返回true,否则返回false.不同于
|,||保证从左到右的评估; 此外,如果第一个操作数的计算结果为,则不计算第二个操作数true.(强调我的)
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |