我在while循環的條件內嘗試了x+=1
,x=x+1
。爲什麼while循環的條件表達式中賦值操作的行爲不同? (CPP)
x = 0 // Initial value of x
第一殼體
while(x+=1 && x < 5){
cout << x << endl;
}
第二殼體
while(x=x+1 && x < 5){
cout << x << endl;
}
第一殼體和第二殼體令人費解。 x+=1
和x=x+1
的行爲有什麼區別,它們都進入無限循環(由於短路)。但是,在第一種情況下x的值被卡在1.
有什麼想法?
根據Is x += 1 more efficient than x = x + 1?,大多數編譯器(好)優化和做完全相同的事情。
編譯器,我使用 - gcc版本5.4.0
*我假設++運算符不返回任何內容*爲什麼假設?爲什麼不看它,看看它真的做了什麼? – NathanOliver
「我假設++運算符不會返回任何內容」您錯誤地假設。 –
如果'++'運算符「沒有返回任何東西」,那麼您將無法將其用作'&&'運算符的操作數。 – AnT