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 次 |
最近记录: |