C语言 设a=1, b=2, c=3,d=4,则表达式a<b?a:c<d?a:d的结果为何是

C语言设a=1,b=2,c=3,d=4,则表达式a<b?a:c<d?a:d的结果为何是1啊... C语言

设a=1, b=2, c=3,d=4,则表达式a<b?a:c<d?a:d的结果为何是1啊
展开
 我来答
windy一点朱砂
2017-11-28
知道答主
回答量:6
采纳率:0%
帮助的人:2061
展开全部

是先运算最右边的。 ?:是条件表达式结合方向是从右向左,这是个三目运算符

即a<b?a:c<d?c:d等价于a<b?a:(c<d?c:d) 翻译成语言文字即先c<d?答案 是,所以执行冒号q前面的c,再判断,前面的a<b?答案 是 所以再a和前面执行的c中选择冒号前面的a

我才是正解,专门扒拉出书来看的,答案是一样的但是优先级不一样,我参考的书是C语言程序设计第三版 何钦铭,颜晖主编(P132P139)!!

淳延
2018-02-28 · TA获得超过1220个赞
知道小有建树答主
回答量:471
采纳率:89%
帮助的人:38.9万
展开全部
a=1, b=2, c=3,d=4,求:a<b?a:c<d?a:d
(1)先看a<b成立不?如果成立,则值为:a,如果不成立,则值为c<d?a:d的值
现在a=1,b=2,a<b成立,所以结果就是a。

(2)因为a的值是1,所以结果就是:1
(3)如果不成立才计算c<d?a:d,如果成立就不计算后面的这个部分了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a04a8f1
2018-02-28 · TA获得超过1100个赞
知道小有建树答主
回答量:1019
采纳率:77%
帮助的人:309万
展开全部
这个是C语言中的条件运算符(?:)它是对第一个表达式作真/假检测,然后根据结果返回另外两个表达式中的一个。
<表达式1>?<表达式2>:<表达式3>
在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。
你这个表达式中,a<b 视为表达式1 为真 则返回 表达式2 即 a的值1 ,后面的表达式3就根本没用。
你的表达式可以视为:(a<b)?a:((c<d)?a:d)。表达式1为 a<b,表达式2为a,表达式3为 c<d?a:d。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
寒寒家
2015-01-11 · TA获得超过2919个赞
知道大有可为答主
回答量:1482
采纳率:100%
帮助的人:1972万
展开全部
从左往右看,因为a<b是正确的,所以返回a,后面的就会执行了。
所以返回1.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沧海雄风2009
2018-02-28 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2801万
展开全部
(a<b)?a:((c<d)?a:d)
等同于
if (a<b)
{
    return a;
}else
{
    if (c<d)
    {
        return a;
    }else
    {
        return d;
    }
}
所以很明显a<b成立 返回a 也就是返回 1   完了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式