前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >条件运算符题目讲解

条件运算符题目讲解

作者头像
用户6755376
发布2019-11-21 12:19:44
8450
发布2019-11-21 12:19:44
举报
文章被收录于专栏:计算机二级C语言

【单选题】设a=1,b=2,c=3,d=4,则表达式a<b?a:c<d?a:d的值是( )。

A 4

B 3

C 2

D 1

大家看到这个题目,会觉得这不是挺简单的,根据优先级(?: 优先级是13,仅高于赋值、逗号运算符),先比较大小,再进行条件运算。选D,是很简单,因为不管你算的对不对,都会得到答案1 。

我们把这段程序改一下,求表达式 1?9:1?8:4 的值是多少?你的答案是9还是8,这个和上面的就有所区别了。

我们执行下面代码看下结果

printf("%d\n",1?9:1?8:4); 执行结果 9

不知道你的答案是不是对的。

不少同学认为 1?9:1?8:4 <=> (1?9:1)?8:4,所以得到结果8。

但实际上明显是 1?9:1?8:4 <=> 1?9:(1?8:4),所以正确运行结果是9。

上面选择题比较简单,不管理解对错,都很容易得到答案选D 1,但是不代表你真的懂。

需要注意的是条件运算符具有右结合性(同样结合方向是右向左的还有优先级为2的自增、自减运算、取值、取地址、逻辑非、sizeof等),不同于加减乘除、关系运算、逻辑运算等大部分结合方向是左到右。

类似题目:

w<x ? x+w : x<y ? x : y

与 w<x ? x+w : ( x<y ? x : y) 等价,与 (w<x ? x+w : x<y) ? x : y 不等价

a>b ? c>d ? e : f : g 与a>b ? (c>d ? e : f) : g等价

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 计算机二级C语言 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档