1.求下列表达式的值:
(1)-2+4*5-6
先算乘除再算加减。结果12
(2)3+7%5-6
先算乘除再算加减。整型结果-1
(3)x=1,y=z=4,(z>=y)?x:0
括号内4>=4为真,结果取x,即1
(4)x=1,y=z=4,(x<=y<=z)?1:0
括号内两个关系运算符,它们优先级相同,所以从左往右计算。首先1<=4为真,取1;接着1<=4为真;最后结果取1
(5)x=2,y=3,z=4,x<y?y++:x++
判断条件2<3为真,取y,结果为3。之后y才自增变为4,但4不是该表达式的值了。
(6)x=2,y=3,z=4,z+=(x<y?y++:x++)
括号内为条件表达式,判断条件2<3为真,取y,条件表达式的值为3;z+=3即z=z+3结果为7
(7)x=2,y=3,z=4,z+=(x<y?++y:++x)
条件判读为真取++y即4,最后表达式的值为8
2.用条件表达式取三个数中的最大者
//因为一个条件表达式只有一次判断,所以这里需要嵌套
3.写出下面程序的输出结果:
(1)
#include<stdio.h>
int main()
{
int x=2,y,z;
x*=y=z=3;
printf("%d\n",x);
x=y=2;
z+=(x++)-(++y);
printf("z=%d,x=%d\n",z,x);
return 0;
}
(2)
#include<stdio.h>
int main()
{
int x=10,y=1,z=1;
x=y==z;
printf("x=%d\n",x);
x=!x>=(y==z);
printf("x=%d\n",x);
return 0;
}