首页
题库
面试
求职
课程
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
已知a=6,b=5,c=7,d=8,则(-a,b-a&&c
[单选题]
已知a=6,b=5,c=7,d=8,则(-a,b>a--&&c>d)?d++:a>b的值为 。
9
6
0
8
查看正确选项
添加笔记
求解答(29)
邀请回答
收藏(551)
分享
19个回答
添加回答
1
leobuzhi
(-a,b>a--&&c>d)?d++;a>b这个表达式就是错的,应该把题目中的;(分号)改为:(冒号),结果才为0。
发表于 2016-02-13 10:16:11
回复(2)
29
RyanZhang
a=6,b=5,c=7,d=8,则(-a,b>a--&&c>d)?d++:a>b
1、-a不会赋值 a=6
2、b>a-- ;先判断b>a 返回false; 然后a--, a=5;
3、判断为false 执行冒号后面的 a(5) > b(5) 为 false
发表于 2016-09-26 17:33:45
回复(8)
21
vivizhang
以下是个人理解:
(1)、逗号表达式是一直往右执行的,然后取逗号表达式的最后一个表达式为整个运算值。
(2)、先是a取负值,此时a = -6; 然后是 b > a -- ,这个先b(5)和a(是-6)比较,然后a自减得a = -5,此时的比较结果为true;
(3)、然后是 c > d比较,这个值为false,导致整个
(-a,b>a--&&c>d)的值为false
(4)、三目表达式,值为false取“:”后面的表达式,即
a>b,此时a = -5, b = 5,所以命题为假,答案是0,选择C
发表于 2016-03-21 15:24:01
回复(8)
14
不入流的程序猿
逗号表达式优先级最低,从左到右执行,如果逗号左边改变了某些变量的值,右边使用改变后的变量值,整个表达式最终的值为逗号右边的值,-a对a的值没有发生改变,所以a=6,自增自减的优先级高与关系运算符,所以b>a--返回false,c>d返回false,?:组合为如果?前面的表达式为真,则返回?后面的值,为假返回:后面的值,最后返回a>b为false,0
发表于 2018-01-22 10:00:54
回复(0)
4
Jae旻Hyun
已知a = 6,b = 5,c = 7,d = 8
1. 逗号表达式 -- 从左往右依次计算表达式,整个逗号表达式的值 = 最后一个表达式的值。
例如:(-a, b>a--),-a不赋值,a = 6,尽管 “--” 的优先级大于 “>”,但是a--是a值先运算再 -1,则b>a--即5>6,a=6-1=5,(-a, b>a--)值是false。
2. (-a, b>a-- && c>d),显然等价于(false && false) → false。
3. 三目运算符(三元运算符)-- 对于条件表达式,z ? x : y,若z = true,则运算结果等于x式的值;若z = false,则运算结果等于y式的值。
例如:(-a, b>a-- && c>d) ? d++ : a>b,因为(-a, b>a-- && c>d) = false,则(-a, b>a-- && c>d) ? d++ : a>b 等价于 a>b,即5>5,false。
综上所述,(-a, b>a-- && c>d) ? d++ : a>b的值为0。
发表于 2018-08-08 22:47:46
回复(1)
3
牛客606231号
-- 运算符的优先级比 ?: 高
(-a,b>a--&&c>d)?d++:a>b
所以在上面执行
a>b时a、b都是5,所以为false,即为0
发表于 2016-04-09 19:01:44
回复(0)
2
牛客901124429号
1.逗号表达式优先级最低,所以先计算逗号右边,b>a--,结果为false,然后a==5;
2.因为&&左边是false,所以不计算右边的表达式;
3.-a的结果是-6,但不改变a,所以a还是5,逗号表达式的值为右边的值为false;
4.所以? :表达式的值为:右边的表达式的值,即a>b的值为5>5==false;
发表于 2021-04-26 21:39:10
回复(0)
2
j$ORoROWy
首先明确两点:逗号表达式取最右值,算术运算不赋值。
优先级:() 大于 > 大于 && 大于 ,
下面看执行步骤:
1、-a, b>a--
&& c>d
值取最右(即b>a--
&& c>d
的值) :先判断 b>a 返回false
2、执行a--,结果 a = 5;
3、判断 false && c>d 不做后面(c>d)的判断,直接返回false
4、false?d++:a>b 执行a>b 返回false
5、得答案为0(false)
发表于 2018-04-13 11:46:57
回复(0)
0
牛客214046228号
a变成了5,a>b为假
发表于 2023-02-09 13:28:47
回复(0)
0
海库里达
-a不会被赋值;b>a--先判断大小(5>6判断失败)后a--使a=5;c>d(7>8判断失败);三目运算符结果为假运算,a>d(5>8判断失败)返回0
发表于 2022-09-22 09:38:50
回复(0)
0
小顾呀
-a没有赋值
发表于 2021-07-02 22:22:56
回复(0)
0
Robin思源
先看逗号表达式1. -a不对a的值操作,a还是62. 因为a--,所以b还是跟a做对比,得到false看问号表达式False对应冒号后面的要看a>b,此时a完成了--,变成了5,不满足大于b,最后结果对应的是0
发表于 2021-02-02 18:11:09
回复(0)
0
牛客-120抢救中心
口诀:淡云一笔安洛三福 单目>算数运算符>移位>比较>按位>逻辑>三目>赋值
发表于 2018-09-30 10:58:40
回复(0)
0
WOW!实属睿智!
个人想法:括号内&&运算左右两边都为假,所以相与后还是假,整个括号结果假,所以右边结果取a>b,又a--后a=5,5>5为假,所以结果为0.
发表于 2017-05-11 21:14:25
回复(0)
0
佳期如梦540
a--的优先级比b>a 高吧 逗号表达式是什么东西,怎么运算
发表于 2017-03-11 21:43:42
回复(0)
0
牛客753413号
直接翻译(-a,b》a--&&c》b)?…;b》a 为-6,5》6(a再变为5)且c》b(false)整体为false,那么b》a也为false所以为0???
编辑于 2015-11-07 09:19:58
回复(0)
0
大菜鸟大菜狗
表达式有错误要是&&前面没有-号,则运算结果为1;
1)先计算a>b和c>d,然后&&运算,最后计算逗号表达式,由于b>a不成立,所以
括号里面的内容是(-6,0)所以返回a>b,结果为1
发表于 2015-10-15 09:58:38
回复(2)
0
小海豹
6
发表于 2015-02-05 14:30:19
回复(0)
0
时光@漫步
这个表达式(-a,b>a-&&c>d)?d++;a>b有错误
发表于 2015-01-28 10:26:59
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
C++
迅雷
上传者:
fan-AX
难度:
19条回答
551收藏
10380浏览
热门推荐
相关试题
怎样修改linux的时区,在不重启...
迅雷
Linux
评论
(4)
Linux命令行下如何查找列出/u...
迅雷
Linux
评论
(26)
运行 ldd hello 可以得到...
百度
C++
评论
(3)
虚拟存储器不能解决的问题是()
操作系统
评论
(4)
细胞周期中属于DNA合成期的是:
细胞生物学
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题