一个小题目

来源:百度知道 编辑:UC知道 时间:2024/06/22 11:52:20
若x=3,y=z=4,求下列的值.

1.(z>=y=x)?1:0
2 z>=y&&y>=x

1.先执行y=x,在判断z>=y?,结果为1
2.z等于y,为真,y>x也为真,所以表达式为真,值为1

0
1

(z>=y=x)?1:0

有问题
-------------------------------------------------------------------------------

运算符优先级简表

++(后置) --(后置) ()(函数调用) [] {} . ->
++(前置) --(前置) - + ~ ! sizeof * & (type) (单目运算符,从右到左结合)
(type name) (从右到左结合)
* / %
+ -
<< >>
< > <= >=
== !=
&
^
|
&&
||
?:
= *= /= %= += -= <<= >>= &= |= ^= (从右到左结合)
,

1 “=”的优先级大于“>=”,所以X的只先赋给Y,再判断Z与Y,得值为1,所以整个选择表达式的值为后者即0,
2 z>=y为真,值为1,y>=x为真,值也为1,所以整个表达式值为1

顶,“=”优先级比“〉=”小呀。。。。。。

话也不多说了,你运行一下吧:
#include <stdio.h>
main()
{int x,y,z,a,b;
x=3;
y=z=4;
a=(y=x<=z)?1:0;
b=z>=y&&y>=x;
printf("%d %d\n",a ,b);
}

结果是 1 0