当前位置首页 > 百科资料> 正文

逗号运算符

2022-07-14 23:37:08 百科资料

在C语言和C++语言中,可以把多个表达式用逗号联接起来(或者说,把这些表达式用逗号分开),构成一个更大的表达式。其中的逗号称为逗号运算符,所构成的表达式称为逗号表达式。逗号表达式中用逗号分开的表达式分别求值,以最后一个表达式的值作为整个表达式的值。

  • 中文名称 逗号运算符
  • 外文名称 Comma Operator
  • 应用范围 C语言,C++语言
  • 值 最后一个表达式的值

逗号运算

  例子:

  int a1,a2,b=2,c=7,d=5; // 第1行

  a1=(++b,c--,d+3); // 第2行

  a2=++b,c--,d+3; //第3行

  对于给a1赋值的代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是(d+3)的值,为8,所以a1的值为8。

  对于给a2赋值的代码,也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)虽然最终表达式的值虽然也为8,但b=4(第2行代码运算完时,b=3,即第3行代码运行时,b的值为4),所以a2=4。

注意事项

  注意:逗号运算的结合性是从左至右,完毕之后整个表达式的值是最后一个表达式的值。

  例子:int a[2],x=2,y=5;

  a[0]=(x+3,y++,x++);那么最终结果是:a[0]=2 x=3 y=6;

  为何a[0]=2:因为(x++)是运算之后再自加

  a[1]=(x++,x+3,x+7);那么最终结果是:a[1]=11 ,x=4

  第一反应,我以为a[1]=10,就是3+7;其实是错的。

  计算a[0]的时候,x++了一次,此时x=3;计算a[1]的时候,又x++一次,此时x=4,因此a[1]=4+7=11

  不信你改成a[1]=(x++,x+7,x+3);调试一下,逗号表达试结果是7,就是4+3,说明经过一个逗号,x已经自加变成4了。

  再来一个关于结合性的例子:

  int i=24;

  int n = (i++,i++,i++,i++); // n == 27

  因为逗号运算符的结合性是自左向右,所以四个i++会依次运行,但是最后一个i++在赋值之后才进行运算,所以最终返回27。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net