C语言 已知a=4,b=2,c=3,d=5,表达式a>b?a:c<d?c:d的值为3.

已知a=4,b=2,c=3,d=5,表达式a>b?a:c<d?c:d的值为3.
请问为什么不是4呢?
我的算法:先算c<d?c:d,结果取c=3
变成a>b?a:c,其中a=4,c=3
再算a>b?a:c,结果取a=4;
请问为什么不对呢,之前一直这么算答案都对了呀。。。麻烦说明一下,谢谢!

你的算法是错的,但结果是4,需要加括号a>b?a:(c<d?c:d)这样才是对的

先算a>b?由于a=4, b=2所以a>b为真,取a的值,后面的就不计算了。

温馨提示:内容为网友见解,仅供参考
无其他回答

C语言 设a=1, b=2, c=3,d=4,则表达式a<b?a:c<d?a:d的结果为何是
即a<b?a:c<d?c:d等价于a<b?a:(c<d?c:d) 翻译成语言文字即先c<d?答案 是,所以执行冒号q前面的c,再判断,前面的a<b?答案 是 所以再a和前面执行的c中选择冒号前面的a 我才是正解,专门扒拉出书来看的,答案是一样的但是优先级不一样,我参考的书是C语言程序设计第三版 何钦铭,颜晖...

C语言环境中,设a=1,b=2,c=3,d=4,则表达式:a>b?a:c>d?a:d的结果为...
表达式:a>b?a:c>d?a:d的结果为4。解析:1、由于C语言的相同优先级运算符运算规则为从左至右依次运算,而条件运算符具有右结合性,所以表达式:a>b?a:c>d?a:d优先运算c>d?a:d,得出的结果为4;2、再运输a>b?a:4,得出的结果为4。所以最终得出的结果为4。

c语言题目;设a=1,b=2,c=3,d=4,则表达式a<b?a:c<d?a:d的结果是
正确。结果是1

C语言中设a=4,b=3,c=2,d=1则表达式:a<b?a:c<d?a:d的结果多少
结果是1;首先判断条件a<=b,如果成立则取a的值,不成立则取(c<=d?a:d)的值;对于c<=d?a:d,先判断c<=d,如果成立则取a的值,不成立则取d的值;所以,很明显,你的表达式里一开始a<=b条件就成立了,直接就取a的值了,a的值就是1,所以结果是1。

c语言两小问。 a=1,b=2,c=3,d=4 a<b?a:c<d?c:d的值为___?
a<b,所以a和c取a,a<dc和d取c=3

"a<b?a:c<d?c:d"的值 是多少??、、、 a=1,b=2,c=3,d=4(c语言)
从右向左结合原则,先算c<d?c:d,结果是3,然后算a<b?a:3,结果是1

C语言,a=1,b=2,c=3,d=4, a<b?a:c<d?a:d的结果?请说明解释,加分!
加几个括号及搞定了:a=1,b=2,c=3,d=4,a<b? a:(c<d?a:d)...1 若a<b成立,1式=a 若a不小于b,1式=括号里的 括号中,若c<d成立,括号=a 若不成立,括号=d 显然,a<b成立,所有1式=a=1;故:最终答案=1。

...a=1,b=2,c=3,d=4;"则表达式"a>b? a:c>d? c:d"的值是多少?
答案是4,因为:?是右结合的运算符,a>b?a:c>d?c:d=a>b?a:(c>d?c:d)

C语言中设a=1,b=2,c=3,d=4;执行printf(%d%d%d\\n",a==b==c,c=a==b...
答案 1113 从右到左运行:第一步:b=c 其他值 a b c d 1 3 3 4 第二步:c==(a=b) 先运行a=b,值为3,在运行c==3,c的值为3, 结果为1,其他的值 a b c d 3 3 3 4 第三步:c=a==b 先运行a==b,第二步可以看出a=3,b=3,a==b的值为1,...

若a=3,b=4,c=5,d=6,则表达式a<b?a:c<d?c:d的值是多少?希望能详细讲解谢 ...
若假,则把表达式3的值作为整个条件表达式的值,执行结束.而条件运算符的结合方向是自右至左.所以表达式a<b?a:c<d?c:d可以写成 表达式a<b?a:(c<d?c:d)先求c<d?c:d表达式的值,按刚才的执行过程,先求解表达式1,c=5,d=6,c<d为真,取c的值作为表达式的值,即(c<d?c:d)的值为5....

相似回答