可能重複:
When all does comma operator not act as a comma operator?逗號運算符和逗號分隔符
什麼時候逗號(,)表現爲運營商,當它表現爲分離而有什麼後果?如果可能的話,請給兩個小例子。
可能重複:
When all does comma operator not act as a comma operator?逗號運算符和逗號分隔符
什麼時候逗號(,)表現爲運營商,當它表現爲分離而有什麼後果?如果可能的話,請給兩個小例子。
逗號表現爲在函數調用,函數聲明,初始化和變量聲明的隔板:
f(a, b);
int a[] = {2, 3, 4};
int c = 2, d = 3;
與此相反,用於分離的語句時,它表現爲逗號運算:
a = 2, b = 3;
c = (doSomething(), doSomethingElse(), result());
它產生的結果是其最右邊的操作數的值,並且執行順序保證從左到右,與函數參數的未定義順序相反。
還有其他一些情況:'int a = 2,b = 3;'與'a = 2,b = 3;'不同。 –
@David:更新了我的答案。 –
還是......這份清單涵蓋了一些但並非全部。即使所有內容都是正確的,因爲我們不能保持一致,因爲對於初學者來說,@Als中顯示的一些案例會回答(爲什麼它沒有upvotes?) –
逗號作爲Operator
逗號操作符(令牌表示,)是評價其第一操作數和丟棄結果的二進制運算符,它然後評估第二個操作數並返回該值(和類型)。逗號運算符具有任何C運算符的最低優先級,並充當序列點。
實施例:
/int i = (5, 10); /* 10 is assigned to i*/
的主要用途逗號運算符的是產生在以下情況下的副作用:
逗號作爲Separator
逗號充當隔板。
實施例:
int a = 1,
b = 2;
void fun(x, y);
又如:
void fun(f1(), f2());
基本上,它無處不在表現爲一個操作符的表達式需要(與表達式的列表)。
可能的重複:http://stackoverflow.com/questions/3128346/when-all-does-comma-operator-not-act-as-a-comma-operator; HTTP://計算器。com/questions/54142/c-comma-operator;而不僅僅是。 –