簡體   English   中英

為什么邏輯OR運算符不首先評估帶括號的右側條件?

[英]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 < 5true ,因此不計算其他表達式; 所以i沒有增加。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM