[英]Why does logical OR operator not evaluating the parenthesized right hand side condition first?
考慮一下代碼:
int i=2, j=3;
if(i<5 or (++i==j))
cout << "i=" << i;
輸出為:
i=2
為什么不使用括號在上述條件下有任何效果? 為什么輸出不是3?
compiler: g++ 4.8.2 on Ubuntu 14.04LTS
or
與||
相同 ,從左到右執行短路評估。 這意味着一旦表達式的結果包含||
已知,評估停止。
( ||
也是一個排序點,因此即使在i >= 5
的情況下,行為也已明確定義)。
由於i < 5
為true
,因此不計算其他表達式; 所以i
沒有增加。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.