在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
具体用法:
假设b=2,c=7,d=5,
a1=(++b,c--,d+3);
a2=++b,c--,d+3;
对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a1=8。
对于第二行代码,那么也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高),所以最终表达式的值虽然为d+3,为8,但a2=3。
注意:逗号运算的结合性是从左至右,完毕之后整个表达式的值是最后一个表达式的值。
假设:int
a[],x=2,y=5;
(1)a[1]=(x+3,y++,x++);那么最终结果是:a[1]=2
x=3
y=6;
)
(2)a[2]=(x++,x+3,x+7);那么最终结果是:a[2]=10
x=4;
扩展资料:
1、逗号运算符,它将两个及其以上的式子联接起来叫都好表达式。逗号表达式的一般形式可以扩展为:
表达式1,
表达式2,
表达式3,
…,
表达式n
它的值为表达式n的值。
2、逗号运算符是所有运算符中级别最低的。因此,下面两个表达式的作用是不同的:
x=(a=3,
6*3)
x=a=3,
6*a
逗号表达式无非是把若干个表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中。
3、在用cout输出一个逗号表达式的值时,要将该逗号表达式用括号括起来,如:
cout<<(3*5,
43-6*5,
67/3)<
评论
0
15
加载更多
2楼说的很详细了
,逗号运算符的作用是将若干表达式连接起来。它的优先级别在所有运算符中是最低的,结合方向是"自左至右"的。其值是最后一个表达式的,其间所有的都要计算,你所说的
a=12+(s+2,d+4);
先算s+2.的4,然后算d+4,最后逗号表达是式的值是d+4=7,整个表达式的值是12+7=19,
1:
a=0,b=0,c=0
2:
c=(a
-=
++a):首先++的优先级高,所以实际上相当于
a=1
c=(a
-=
a)=0
3:a
+=b
因为前面a-=a
得到的a=0,所以a=
a+b
=0
4:b+=4
得到b=4
5:
综上
a=0,b=4,c=0所以输出是这个