gpt4 book ai didi

java - 返回(n > 2)? n = 5 : n = 4; doesn't work?

转载 作者:行者123 更新时间:2023-12-04 01:05:27 25 4
gpt4 key购买 nike

为什么会返回错误

return (n > 2) ? n = 5 : n = 4;

但这不是

return (n > 2) ? n = 5 : n + 4;

是否应该根据这两种情况返回n

最佳答案

您的代码无法编译,因为三元运算符具有更高的 operator precedence 比赋值运算符:

Operator Precedence

  1. postfix (expr++ expr--)
  2. unary (++expr --expr +expr -expr ~ !)

...

  1. ternary (? :)
  2. assignment (= += -= *= /= %= &= ^= |= <<= >>= >>>=)

解析代码时

(n > 2) ? n = 5 : n = 4;

它将像这样解析它:

(n > 2) ? n = 5 : n     // ternary operator
= 4 // assignment operator

这会产生如下伪代码:

someResultValue 
= value;

那是行不通的,你会得到如下编译错误:

'Syntax error on token "=", <= expected'

'Type mismatch: cannotconvert from Object & Comparable<?> & Serializable to int'.

可以使用圆括号让java把三元运算符的第三个参数看成n = 4 .代码如下所示:

return (n > 2) ? n = 5 : (n = 4);

关于java - 返回(n > 2)? n = 5 : n = 4; doesn't work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66621301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com