逗號運算子

計算其左運算元,丟棄結果值,然後計算其許可權運算元,結果產生其最右運算元的值。

int x = 42, y = 42;
printf("%i\n", (x *= 2, y)); /* Outputs "42". */

逗號運算子在其運算元之間引入了一個序列點

請注意,函式呼叫中使用的逗號分隔引數不是逗號運算子,而是稱為與逗號運算子不同的分隔**符。因此,它沒有逗號運算子的屬性。

上面的 printf() 呼叫包含逗號運算子分隔符

printf("%i\n", (x *= 2, y)); /* Outputs "42". */
/*           ^        ^ this is a comma operator */
/*           this is a separator */

逗號運算子通常用於初始化部分以及 for 迴圈的更新部分。例如:

for(k = 1; k < 10; printf("\%d\\n", k), k += 2);   /*outputs the odd numbers below 9/*

/* outputs sum to first 9 natural numbers */
for(sumk = 1, k = 1; k < 10; k++, sumk += k)
    printf("\%5d\%5d\\n", k, sumk);