C++的逗号运算符
逗号运算符( , )是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的入栈顺序,感兴趣的可以自己试试看,笔试挺喜欢考这种阴间的东西的
希望对大家有帮助。