return (n > 2) ? n = 5 : n = 4;不起作用?
return (n > 2) ? n = 5 : n = 4; doesn't work?
为什么这 return 是一个错误
return (n > 2) ? n = 5 : n = 4;
但这并不
return (n > 2) ? n = 5 : n + 4;
它不应该 return n
取决于这两种情况吗?
我想你可能有任何语法错误。我在 chrome JS 控制台中尝试过并且工作正常!!
更新:有人在评论里说我没有写函数所以我用函数格式写了结果一样!
语法:
健康)状况 ?表达式 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);
}
}
输出:
一 = 5
b = 5
你的代码无法编译,因为三元运算符的operator precedence
比赋值运算符高:
Operator Precedence
- postfix (
expr++ expr--
)
- unary (
++expr --expr +expr -expr ~ !
)
...
- ternary (
? :
)
- 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: cannot
convert from Object & Comparable<?> & Serializable to int'.
可以用括号让java把三元运算符的第三个参数看成n = 4
。代码如下所示:
return (n > 2) ? n = 5 : (n = 4);
为什么这 return 是一个错误
return (n > 2) ? n = 5 : n = 4;
但这并不
return (n > 2) ? n = 5 : n + 4;
它不应该 return n
取决于这两种情况吗?
我想你可能有任何语法错误。我在 chrome JS 控制台中尝试过并且工作正常!!
更新:有人在评论里说我没有写函数所以我用函数格式写了结果一样!
语法: 健康)状况 ?表达式 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);
}
}
输出: 一 = 5 b = 5
你的代码无法编译,因为三元运算符的operator precedence
比赋值运算符高:
Operator Precedence
- postfix (
expr++ expr--
)- unary (
++expr --expr +expr -expr ~ !
)...
- ternary (
? :
)- 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: cannot convert from Object & Comparable<?> & Serializable to int'.
可以用括号让java把三元运算符的第三个参数看成n = 4
。代码如下所示:
return (n > 2) ? n = 5 : (n = 4);