自然语言读 A?B:C
A成立吗?成立的话执行B,否则执行C
逗号表达式:
例题1:
main()
{
int x,y,z;
x=1;
y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
这里先有赋值运算符,再有逗号运算符, 赋值运算符优先
所以 实际上是 (z=x++),(y++,++y)
z=x , x = x +1 , y = y+1 , y = y + 1
y从1开始自加两次,所以y是3
z=x++ 是后自增,后面才自增的, 先z = x
答案 x= 2 y =3 z =1
例题2: 赋值结合逗号运算符,赋值优先
若t为double类型,表达式t=1,t+5 t的值是
(t=1),(t+5) 其中t+5不会改变t的值, t+=5才会改变t的值
相当于 t = 1 , t+5 ,答案是 t = 1
逗号运算符,每个逗号之后是一句独立的语句
t++就是t++,和前面t=1没有关系
不是t=t++
而是(t=1),t++;
例题3:逗号表达式的值为
若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是
逗号表达式最后的值取最后一个的值,即y=1+1=2,最后一个值为2