9_三目运算符和逗号表达式

 

 

 自然语言读 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

 

posted @ 2020-02-26 15:00  写博客是第一驱动力  阅读(385)  评论(0)    收藏  举报