逗號運算子:,
允許群組中應該只有一列的兩個陳述式。
expression , expression
備註
逗號運算子具有由左到右的順序關聯性 (Associativity)。 兩個以逗號分隔的運算式會向左到右評估。 永遠會評估左邊的運算元,且所有副作用皆已都完成之前會評估右邊的運算元。
逗號可用來做某些內容,例如函式引數清單中的分隔符號。 請勿混淆使用逗點來區隔其用途為運算子。 兩種用法是完全不同。
請考慮運算式
e1 , e2
型別和運算式的值都是型別和值 e2。 評估的結果 e1 會被捨棄。 如果右邊的運算元是左值,結果會是左值。
在正常使用逗號來區隔 (例如在函式或彙總初始設定式的實質引數),逗號運算子和運算元必須括在括號中。 例如:
func_one( x, y + 2, z );
func_two( (x--, y + 2), z );
函式中呼叫func_one上方,就會傳遞三個引數,並以逗點分隔: x, y + 2,以及z。 在函式呼叫func_two,括號會強制編譯器解譯為循序評估運算子的第一個逗號。 這個函式呼叫會傳遞兩個引數func_two。 第一個引數會循序評估作業的結果, (x--, y + 2),它具有的值和運算式的型別y + 2。 第二個引數是z。
範例
// cpp_comma_operator.cpp
#include <stdio.h>
int main () {
int i = 10, b = 20, c= 30;
i = b, c;
printf("%i\n", i);
i = (b, c);
printf("%i\n", i);
}