C++的逗号运算符

逗号运算符( , )是C++语言运算符中优先级最低的一种运算符,结合顺序是从左至右,用来顺序求值(最后一个逗号后面表达式的值作为整个表达式的值)。

感觉这个东西还是挺冷门的,之前都不知道,平时也比较少用到,不过探究这个是个挺有趣的过程。

以下是几个无聊的小实验:

  1. 逗号+常数语句的返回值

    int a = 1;
    a = (1, 2, 3);//a = 3
    
  2. 逗号+赋值语句的返回值

    int a = 1;
    int b;
    a = (b = 2, b += 2);//b = 4, a = 4, 顺便知道了b += 2与b = 2语句的返回值都是b
    
  3. 逗号+自增/减运算符的返回值 I

    int a = 10;
    int b = 2;
    a = (a++, b = 2);//最终结果为右边语句的返回值,所以a = 2
    
  4. 逗号+自增/减运算符的返回值 II

    int a = 10;
    int b = 2;
    b = (a++, a++);//第二个a++语句结束再结算,所以b = 11
    
  5. 逗号+自增/减运算符的返回值 III

    int a = 10;
    a = (a--, --a);//a = 8
    
  6. 逗号+自增/减运算符的返回值 IV

    int a = 10;
    int b = 2;
    a = (b += a++, (a++) + b++);//a = 24, b = 13, ((a++)+ b++)的值为(11 + 12),然后赋值给a之后a再自增到24
    
  7. 最后的实验

    int a[3] = { 0,0,0 };
    int b = 0;
    a[++b] = (a[b++] = 2, b++);
    for (auto num : a)
    {
          cout << num << ' ';
    }
    //这段代码又涉及了自增的一些坑,b++和++b的入栈顺序,感兴趣的可以自己试试看,笔试挺喜欢考这种阴间的东西的
    

    希望对大家有帮助。

原文地址:https://www.cnblogs.com/VisionWongBlog/p/13150001.html