代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
int x=1,y=2,z;
z=x>y?++x:y++;
printf("x=%d,y=%d,z=%d\n",x,y,z);
return 0;
}
运行结果如下:
分析:
- y++ 表达式的值为y,而y的值为y+1。
- 为什么z=2?
答:因为三目运算符的赋值高于赋值运算符,而三目运算符与表达式的值为:如果表达式1的值为真,则求解表达式2,以整个表达式2的值作为整个条件表达式的值;如果表达式1的值为假,则求解表达式3,以整个表达式3的值作为整个条件表达式3的值。