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

  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: cannot convert from Object & Comparable<?> & Serializable to int'.

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

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