为什么会返回一个错误。
return (n > 2) ? n = 5 : n = 4;
但是这并不意味着
return (n > 2) ? n = 5 : n + 4;
根据情况,它不应该能够返回n
吗?
运算符优先级
高于赋值运算符:
运算符优先级
- 后缀 (
expr++ expr--
)- 一元 (
++expr --expr +expr -expr ~ !
)...
- 三元 (
? :
)- 赋值 (
= += -= *= /= %= &= ^= |= <<= >>= >>>=
)
在解析代码时。
(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: cannot convert from Object & Comparable<?> & Serializable to int'.
你可以使用括号将第三个参数括起来,让Java将其视为n = 4
。代码应该是这样的:
return (n > 2) ? n = 5 : (n = 4);
语法: 条件 ? 表达式1 : 表达式2;
试试这个
public class Solution {
public static void main(String[] args) throws IOException {
int a = 10;
int b = (a>5)?a=5:0;
System.out.println("a = "+ a);
System.out.println("b = "+b);
}
}
输出: a = 5 b = 5
返回 (n > 2) ? 5 : 4; }
这是Java语法。 - BabyProgrammer