逗号运算符

逗号运算符

C语言中的符号
逗号运算符是指在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
    中文名:逗号运算符 外文名: 别名: 应用:C语言 用途:分割多个表达式 目的:分别结算

逗号运算

在C语言中逗号“,”也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。

例如:

inta1,a2,b=2,c=7;d=5;

a1=(++b,c--,d+3);

a2=++b,c--,d+3;

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

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

注意事项

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

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

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

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

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

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

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

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

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

int i=24;

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

因为逗号运算符的结合性是自左向右,所以四个i++会依次运行,最终返回27(注意不是28,因为最后一个是后置加),而不是24或者其它。

相关词条

相关搜索

其它词条