C语言编程:x>=y&&x>=z?x:y>=x&&y>=z?y:z 怎样解释?

如题所述

先说明,该题采用很糟糕的书写风格,难以理解,难以维护,难以纠错。

由于表达式之间没有用()明确操作,所以操作符的优先级采用C语言的缺省设定。这里主要涉及以下几个操作符:

>= 比较运算符
&& 逻辑与运算符
?: 三操作数的条件运算符

优先级如下:
“>=” > “&&” > “?:”

因此该表达式可以改写成:
(x>=y)&&(x>=z)?x:(y>=x)&&y>=z?y:z
继续:
((x>=y)&&(x>=z))? x : ((y>=x)&&y>=z) ? y : z

因此,题目的语义是:
取x, y, z中的最大值。相当于:

max(x, y, z)
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-03
先了解xyz的值,
先判断,x>=y&&x>=z是否成立,这是与关系。
如果成立就判断x,x不为假,那么就是执行y
如果x>=y和x>=z不成立,就判断y>=x&&y>=z
如果这是成立的,也执行y,不成立就是z

这里注意 那个运算为真。与运算,还有就是 “ ? : ”
判断组合,
a?b:c
这就是a为真么,真就是执行b,
不然就执行c。
这里从左往右看就是。
呵呵!本回答被提问者采纳
第2个回答  2013-01-03
这里首先给你解析一下x>=z?x:y这个表达式:
这个表达式的意思是,先判断x>=z是否为真,为真则取x,为假则取y

然后这个表达式的意思是:
x >= y
and
(x>=z?x:y)>= x
and
y>=z?y:z
第3个回答  2013-01-03
楼上解答很准确了
你这个式子 通俗点说
如果x大于等于y 且x大于等于z这个条件属实 结果就是x
若不属实 往后看 执行又一条同样指令
看y大于等于x 且 y大于等于z是否属实 属实 结果就是y
不属实 结果就是z
这个属于套嵌 初学的话 自己解析的时候加上括号会容易点
以上
第4个回答  2013-01-03
A?B;C
解释为A是否为真?若为真则执行B,否则执行C追问

怎样用三目运算符求3个数X,Y,Z的最大值?

追答

a>b&&a>c?max=a:(b>a&&b>c?max=b:max=c);

C语言编程:x>=y&&x>=z?x:y>=x&&y>=z?y:z 怎样解释?
((x>=y)&&(x>=z))? x : ((y>=x)&&y>=z) ? y : z 因此,题目的语义是:取x, y, z中的最大值。相当于:max(x, y, z)

C语言,x>y?x>z?x:y:y>z?y:z;这句啥意思?
x>y?x>z?x:y:y>z?y:z;分三步:x>y?(x>z?x:y):(y>z?y:z);(x>z?x:y)返回的是x或者y,x>z时返回x,否则返回y;(y>z?y:z) 返回的是y或者z,y>z时返回y,否则返回z;最后在综合以上结果:x>y?():()

关系x>= y>= z在C语言中怎样表示的
表示关系x>=y>=z 在C语言中,应该用 x>=y && y>=z来表示。x>=y>=z 这种写法是数学上的表达方法 在C语言中,如果写成这样,程序编译并不报错,这也是一个合法的逻辑运算表达式。先计算x>=y,结果是真(1)或假(0),然后再用这个结果与z进行比较,得到最终结果。这个结果与x>=y && ...

c语言描述x和y都大于或等于z的表达式是
c语言描述x和y都大于或等于z的表达式是:(x >= z) && (y >= z)。具体释义:当x大于或等于z,并且y大于或等于z时,表达式的结果为真(即非零值),否则结果为假(即0)。这样的表达式可以用于条件判断、循环控制等方面的编程中。C语言简介:C语言是一种通用的高级程序设计语言,最初由美国贝尔...

c语言中 x<y?x:z<w?y:w是什么意思
?:称为条件运算符。?:就是表示?前的表达式的值是否为真,是的话取冒号前的值,否则取冒号后的值。相当于:if (x>y){z=x;} else {z=y;}

c语言中z=x>y?x:y 是什么意思
?:是一个三目运算符,他的意思是如果问号前面的表达式为真,则返回:之前的表达式的值,否则返回:之后的表达式的值 这句话可以拆解为 if(x>y) { z=x;} else { z=y;}也就是将x、y的较大者赋值给z

C语言里 if(x<y) x=y; if(x<z) x=z; 是什么意思啊 在线等 那位帮忙解 ...
啥!!!X为最大值。第一句 if(x<y) x = y 分两种情况若x >= y 不执行x = y,若x<y,执行x = y(操作完即x>y),同理第二个语句执行完x>z;即x为最大值

为什么C语言中max函数不能取到最大值
结果也并非一定是第一个数值,楼主没把所有的情况考虑到,比如说,你若输入1,8,8,则结果是-56,原因是你没考虑到相等情况,楼上两位也没考虑到,所以也会出错。只需要把条件改成 if(x>=y&&x>=z)e=x;if(y>=x&&y>=z)e=y;if(z>=x&&z>=y)e=z;请上机验证。

表达关系x<=y<=z的c语言表达式为
(x<y||x=y)&&(y<z||y=z)

x>=y>=z c语言
z>=y>=x;的意思是 先求z>=y的值 也就是4>=4;这个结果是真,也就是1 然后求 1>=x 也就是1>=3,结果是假。就是0 只要x>1,那么无论y和z是什么值,结果都是0 ,因为z>=y不是0就是1

相似回答