逗號運算符( , )是C++語言運算符中優先順序最低的一種運算符,結合順序是從左至右,用來順序求值(最後一個逗號後面表達式的值作為整個表達式的值)。 感覺這個東西還是挺冷門的,之前都不知道,平時也比較少用到,不過探究這個是個挺有趣的過程。 以下是幾個無聊的小實驗: 逗號+常數語句的返回值 int a ...
逗號運算符( , )是C++語言運算符中優先順序最低的一種運算符,結合順序是從左至右,用來順序求值(最後一個逗號後面表達式的值作為整個表達式的值)。
感覺這個東西還是挺冷門的,之前都不知道,平時也比較少用到,不過探究這個是個挺有趣的過程。
以下是幾個無聊的小實驗:
-
逗號+常數語句的返回值
int a = 1; a = (1, 2, 3);//a = 3
-
逗號+賦值語句的返回值
int a = 1; int b; a = (b = 2, b += 2);//b = 4, a = 4, 順便知道了b += 2與b = 2語句的返回值都是b
-
逗號+自增/減運算符的返回值 I
int a = 10; int b = 2; a = (a++, b = 2);//最終結果為右邊語句的返回值,所以a = 2
-
逗號+自增/減運算符的返回值 II
int a = 10; int b = 2; b = (a++, a++);//第二個a++語句結束再結算,所以b = 11
-
逗號+自增/減運算符的返回值 III
int a = 10; a = (a--, --a);//a = 8
-
逗號+自增/減運算符的返回值 IV
int a = 10; int b = 2; a = (b += a++, (a++) + b++);//a = 24, b = 13, ((a++)+ b++)的值為(11 + 12),然後賦值給a之後a再自增到24
-
最後的實驗
int a[3] = { 0,0,0 }; int b = 0; a[++b] = (a[b++] = 2, b++); for (auto num : a) { cout << num << ' '; } //這段代碼又涉及了自增的一些坑,b++和++b的入棧順序,感興趣的可以自己試試看,筆試挺喜歡考這種陰間的東西的
希望對大家有幫助。