2012-10-10 78 views
4

可能重複:
C++ Comma Operator
Uses of C comma operator這裏使用了逗號運算符?

我沒有新的C++,但這是我第一次看到下面的代碼:

int a=0; 
int b=(a=2,a+1); 

那是C++代碼。你能告訴我這裏發生了什麼嗎?變量b如何得到值3?

+5

查找逗號操作符。 – chris

+1

不要編寫這樣可怕的代碼來閱讀。 –

+0

這是我看到的代碼。你說什麼是可怕的閱讀?你的意思是不要在這種情況下使用逗號運算符或什麼? – seeker

回答

12

該代碼相當於此:

int a = 2 ; 
int b = a + 1 ; 

首先表達到逗號的左側被評估,然後在一個在其右側。最右邊表達式的結果存儲在=符號左側的變量中。

查看逗號運算符以瞭解更多詳細信息。

http://en.wikipedia.org/wiki/Comma_operator

+0

謝謝,我現在看到。 – seeker

+0

你確定嗎?我認爲這個代碼相當於'int b = a = 2; int b = a + 1;'注意細微差別 – kimbaudi

3

(a = 2, a + 1);因爲在一般情況下,操作者(A,B)返回b和在計算返回圖3(a,b)中從右到左開始。所以,你的情況,(a = 2, a + 1)回報a + 1,和運營商a = 2後執行a + 1回報3.