該程序是這樣的C/C++多個條件,如果聲明
if(z = x < y){
x +=3;
y -= 1;
}
else
x = y++;
輸入值x = 7
,y = 7
和z = 2
。 輸出值爲x = 7
,y = 8
和z = 0
。
我不知道這個聲明是如何工作的... 任何人都可以幫我嗎?
該程序是這樣的C/C++多個條件,如果聲明
if(z = x < y){
x +=3;
y -= 1;
}
else
x = y++;
輸入值x = 7
,y = 7
和z = 2
。 輸出值爲x = 7
,y = 8
和z = 0
。
我不知道這個聲明是如何工作的... 任何人都可以幫我嗎?
首先評估比較,因爲<
比=
具有更高的優先級。比較的結果是false
(即轉換爲0),然後z
設爲0.然後將條件評估爲false
,因此執行else
分支,其中首先進行分配,然後增加y
(請參閱運營商後綴++
)。順便說一句,你不應該寫這樣的代碼,但作爲z = (x<y)
,所以沒有人會感到困惑。其餘的則如下。
我明白這是不好的編碼,但這只是我的一個測試問題,我從來不明白它的作用 –
並且感謝您!!這非常有幫助 –
@programing_is_hard:歡迎來到Stackoverflow!請花一些時間閱讀[關於頁面](http://stackoverflow.com/about),因爲您的個人資料顯示您還沒有這樣做。但首先,請閱讀[有人回答我的問題,該怎麼辦!?](http://stackoverflow.com/help/someone-answers)。 – usr2564301
由於x < y
爲false,因此您可以在if
的腦海中用替換爲false
。這應該使代碼變得無法理解。
賦值表達式的值是賦值,所以z = x < y
的值只是x < y
的值(即true或false)。變量z
不使用你的代碼,作爲可以簡單地寫:
if (x < y) { x += 3; y -= 1; }
else { x = y; ++y; }
做它以圖形:
x = 7 ; y = 7 ;
if(z= x < y){ // x = (7 < 7) => z = 0,
x +=3; // Not executed
y -= 1;
}
else
x = y++; // x = 7, y = y + 1 (Y = 8)
特別if語句...我不知道的情況是什麼 –
編譯並運行代碼。添加大量的日誌記錄,直到你理解它。 (你知道哪一個'if'執行了嗎?) –
我認爲其他部分? –