逗號運算子:,
允許將兩個陳述式設為群組,其中一個是必要項。
語法
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);
}
20
30
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應