2014-10-12 92 views
-6

我面對它提示出來16. 什麼是(B,A)的平均代碼操作員在C/C++

int a=6, b=7; 
cout << (b,a); 

行?它是否執行操作?

+5

這應該打印出'6'。 – juanchopanza 2014-10-12 14:25:19

+1

「1」必須來自其他東西之前..它應該輸出6 – 2014-10-12 14:25:53

+1

「它提示16」 - [不,它]不會](http://ideone.com/ASd7nt) – WhozCraig 2014-10-12 14:27:21

回答

3

在這個表達式中

(b,a) 

有逗號運算符。它的值是逗號後最後一個(右)子表達式的值。第一個(左)子表達式的值被丟棄。這樣的輸出將是

6 

從C++標準

一對由逗號分隔的表達式求值左到右; 左表達式是丟棄值表達式(條款5).87每個值表計算和與左表達式 相關聯的副作用在每個值計算和副作用與相關聯的 與右表達式相關聯之前被排序。結果的類型和值是 類型和右操作數的值;結果與右操作數具有相同的值 類別,並且如果其右操作數 是一個glvalue和一個位域,則該位域是一個位域。如果右操作數的值是 臨時值(12.2),則結果爲臨時值。