一道C语言很简单的题目,懂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的值为__? 很简单的啊,给我个详细解析。这个关系表达式是从右向左结合,然后执行也是从右向左吗?? 展开
 我来答
百度网友2df1e6e40
2010-09-20 · 超过11用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:27.7万
展开全部
首先要知道? :这是一个三目运算符,如 (表达式)? x : y, 意思是说如果表达式是正确的,那么就选择x,如果错误的就选择y。
那我们看这里,可以分成三部分(a++<b) ? (a++):(c<d?a++:d)。而后面的(c<d?a++:d)又可以分成三部分(c<d) ? (a++):(d)。
我们先看第一个式子,如果是正确的,那么选择a++,如果是错误的就选择(c<d?a++:d)。很显然,如果是选择了(c<d?a++:d),那么还要进行一次运算。那我们看总的表达式,(a++<b) ? (a++):(c<d?a++:d),要判断a++<b是对的还是错的。
a=1, b=2.而这里用了a++,这里也就是考察a++和++a的区别:a++是先进行a<b的运算,然后a+1,而++a是先a+1,然后判断a<b。那很显然a++<b是正确的,所以说选择的是a++。
因为前面只是一个判断语句,所以虽然有a++,但是a+1这个操作并没有执行,而是知道选择输出a++时才进行了a++的操作,所以应该是输出2.
jiang7917
2010-09-20 · TA获得超过250个赞
知道答主
回答量:66
采纳率:0%
帮助的人:0
展开全部
a++ 是不是小于 b, 是结果为 a++;
不是结果为 (c<d?a++:d)的结果;
a++在表达式中使用时 先不+1,
所以就是问1是不是小于2,当然是,然后第一个a++把 a+1 ,此时a=2;
然后条件判断语句为真的结果是 a++,即第二个a++,还是先不+1,所以条件判断语句结果是2,所以如果printf的话,结果是2,条件判断语句之后a在加一,此时a=3,再printf a 的话,结果是3,还好没算另一个条件判断语句

这种题就是垃圾题,谁编程这么写,我代表他们老板开除他
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蔷秋梵同00W
2010-09-20 · TA获得超过713个赞
知道小有建树答主
回答量:321
采纳率:0%
帮助的人:0
展开全部
这个问题有点变态,这个在不同的运行平台上面是不一样的,,
不如直接去运行,,伤脑筋
#include<stdio.h>
void main()
{
int a,b,c,d,e;
a=1;b=2;c=3;d=4;
e=a++<b?a++:c<d?a++:d;
printf("%d\n",d);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8cb420e
2010-09-20 · 超过27用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:75.2万
展开全部
实际应用就不应该有这样的语句
BS
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式