逗號表達式的語法爲:
表達式1,表達式2,...表達式n
C++順序計算表達式1,表達式2,……,表達式n的值。例如:
int a,b,c;
a=l,b=a+2, c=b+3;
由於按順序求值, 所以能夠保證b一定在a賦值之後, c一定在b賦值之後。該逗號表 達式可以用下面3個有序的賦值語句來表示:
a=1;
b=a+2;
c=b+3;
逗號表達式是有值的,這一點是語句所不能代替的。逗號表達式的值爲第n個子表達 式的值,即表達式n的值。例如:
int a,b,c,d;
d=(a=1,b=a+2,c=b+3);
cout<<d<<endl;
輸出結果爲:
6
上例中輸出的結果d即爲c的值。
逗號表達式還可以用於函數調用中的參數。例如:
func(n,(j=1,j+4),k);
該函數調用有3個參數,中間的參數是一個逗號表達式。括號是必須的,否則,該函數有4個參數了。逗號表達式作爲值的形式,可以用於幾乎所有的地方。
C++中,如果逗號表達式的最後一個表達式爲左值,則該逗號表達式爲左值。例如:
(a=1,b,c+1,d)=5; //ok:即d=5
->在C中,逗號表達式是不能作左值的,所以 “(a=1,b,c+1,d)=5;”將通不過編譯。