首页 > 试题广场 >

若有int w=1, x=2, y=3, z=4;则条件表达

[单选题]
若有int w=1, x=2, y=3, z=4;则条件表达w < x ? w : y < z ? y : z的值是3.
  • 正确
  • 错误
w<x?w:(y<z?y:z), 一般容易直接从头算导致出错。因为优先级的问题,应该先算括号中的表达式。
正确顺序从右向左
发表于 2017-08-02 13:40:52 回复(2)
更多回答
w<x?w:(y<z?y:z)  加个括号应该就好理解了  w<x为真,返回w,即表达式的值为1
发表于 2017-05-29 21:22:37 回复(3)
三目运算符的运算顺序是从右至左。
发表于 2018-07-09 23:31:55 回复(1)
问号表达式运算顺序是从右到左的结合
发表于 2017-10-10 21:41:09 回复(1)
为什么是3,怎么看都是1呀
发表于 2017-05-09 09:28:07 回复(0)

三目运算符: (表达式1)?(表达式2):(表达式2)。
含义:如果表达式1为真,则结果为表达式2,否则结果为表达式3
即,先计算表达式1,如果表达式1为真,再计算表达式2,否则计算表达式3
w<x ? w : y<z?y:z 等价于 (w<x) ? (w) : (y<z?y:z)

发表于 2022-11-24 20:25:35 回复(0)

w<x ? w : y<z?y:z 等价于 (w<x) ? (w) : (y<z?y:z)

根据条件表达式的运算规则,条件表达式从左到右依次计算。首先比较w和x的值,由于w小于x,所以条件表达式的值为w,即1。因此,整个表达式的值为1。

发表于 2023-10-18 21:36:58 回复(0)
3目运算符从右至左
发表于 2021-02-07 09:29:38 回复(0)
三目运算符的优先级仅比等号的优先级大,结合方向从右向左。
A?B:C  若A成立执行B,不成立执行C 
w < x ? w : (y < z ? y : z)
表达式的值为1
发表于 2023-08-29 08:27:22 回复(0)

w<x?w:y<z?y:z的值应当为1.因为条件运算符的结合方向是从右往左的。所以上述表达式的值应当先计算后面那个条件运算符:?的值,即w<x?w:(y<z?y:z).

发表于 2019-10-12 11:11:58 回复(1)

考察运算优先级

a ? b : c的运算优先级为从右到左

编辑于 2019-03-02 18:58:11 回复(0)
优先级的问题 :的优先级<比较级
发表于 2017-10-31 23:23:15 回复(0)
从右到左
发表于 2017-05-17 00:17:04 回复(0)
OKM头像 OKM
发表于 2017-05-10 18:34:17 回复(0)
由于条件操作符的从右到左的关联性,这个表达式应该被解析为 w < x ? w : (y < z ? y : z)。
按照这个解析:
如果 w < x 为真(在这个例子中,1 < 2 是真的),那么整个表达式的值就是 w 的值,也就是 1。
否则,会继续评估 y < z ? y : z,并返回相应的值。
所以,这个表达式的值是 1,而不是 3。
发表于 2023-09-27 11:54:01 回复(0)
w<x?w:(y<z?y:z)  加个括号应该就好理解了  w<x为真,返回w,即表达式的值为1
发表于 2022-03-18 16:10:04 回复(0)
w<x?w:(y<z?y:z)
发表于 2022-03-02 15:02:59 回复(0)
单目运算符和条件运算符的结合方向 都是从右到左的!
发表于 2021-10-26 09:01:57 回复(0)
三目运算符的运算顺序是自右往左
发表于 2021-10-13 11:57:23 回复(0)
三目运算符的运算顺序是从右至左。
发表于 2021-09-16 09:28:59 回复(0)