首页 > 试题广场 >

已知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
(-a,b>a--&&c>d)?d++;a>b这个表达式就是错的,应该把题目中的;(分号)改为:(冒号),结果才为0。
发表于 2016-02-13 10:16:11 回复(2)
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)
以下是个人理解:
(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)
逗号表达式优先级最低,从左到右执行,如果逗号左边改变了某些变量的值,右边使用改变后的变量值,整个表达式最终的值为逗号右边的值,-a对a的值没有发生改变,所以a=6,自增自减的优先级高与关系运算符,所以b>a--返回false,c>d返回false,?:组合为如果?前面的表达式为真,则返回?后面的值,为假返回:后面的值,最后返回a>b为false,0
发表于 2018-01-22 10:00:54 回复(0)
已知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)
-- 运算符的优先级比 ?: 高
(-a,b>a--&&c>d)?d++:a>b
所以在上面执行 a>b时a、b都是5,所以为false,即为0
发表于 2016-04-09 19:01:44 回复(0)
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)
首先明确两点:逗号表达式取最右值,算术运算不赋值。
优先级:() 大于 > 大于 && 大于 ,
下面看执行步骤:
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)
a变成了5,a>b为假
发表于 2023-02-09 13:28:47 回复(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)
-a没有赋值
发表于 2021-07-02 22:22:56 回复(0)
先看逗号表达式1. -a不对a的值操作,a还是62. 因为a--,所以b还是跟a做对比,得到false看问号表达式False对应冒号后面的要看a>b,此时a完成了--,变成了5,不满足大于b,最后结果对应的是0
发表于 2021-02-02 18:11:09 回复(0)

口诀:淡云一笔安洛三福 单目>算数运算符>移位>比较>按位>逻辑>三目>赋值

发表于 2018-09-30 10:58:40 回复(0)
个人想法:括号内&&运算左右两边都为假,所以相与后还是假,整个括号结果假,所以右边结果取a>b,又a--后a=5,5>5为假,所以结果为0.
发表于 2017-05-11 21:14:25 回复(0)
a--的优先级比b>a 高吧 逗号表达式是什么东西,怎么运算
发表于 2017-03-11 21:43:42 回复(0)
直接翻译(-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)
表达式有错误要是&&前面没有-号,则运算结果为1;
1)先计算a>b和c>d,然后&&运算,最后计算逗号表达式,由于b>a不成立,所以
括号里面的内容是(-6,0)所以返回a>b,结果为1
发表于 2015-10-15 09:58:38 回复(2)
6
发表于 2015-02-05 14:30:19 回复(0)
这个表达式(-a,b>a-&&c>d)?d++;a>b有错误
发表于 2015-01-28 10:26:59 回复(0)