不是声明。为什么不?
Not a statement. Why not?
当我试图编译以下 Java 程序时:
public class MyClass
{
static int f1() { return 10; }
static int f2() { return 20; }
public static void main(String args[])
{
int x = 10;
(x <= 10) ? f1() : f2();
}
}
我收到错误:
/MyClass.java:9: error: not a statement
(x <= 10) ? f1() : f2();
^
Java 语言定义将语句视为赋值、increment/decrement、方法调用或对象创建之一。我的错误 "statement" 涉及方法调用,因此应该有效。事实上,如果我有一个像这样的语句:
f1();
编译器编译程序时没有任何抱怨。同样,如果我将最后一行更改为:
int y = (x <= 10) ? f1() : f2();
然后,一切都很好。
作为最后一条信息,C 和 C++ 都不会注意到:
(x <= 10) ? f1() : f2();
表达式中使用了三元运算符。对于语句,您可以使用 if 语句。这就是定义语法的方式。期间.
当我试图编译以下 Java 程序时:
public class MyClass
{
static int f1() { return 10; }
static int f2() { return 20; }
public static void main(String args[])
{
int x = 10;
(x <= 10) ? f1() : f2();
}
}
我收到错误:
/MyClass.java:9: error: not a statement
(x <= 10) ? f1() : f2();
^
Java 语言定义将语句视为赋值、increment/decrement、方法调用或对象创建之一。我的错误 "statement" 涉及方法调用,因此应该有效。事实上,如果我有一个像这样的语句:
f1();
编译器编译程序时没有任何抱怨。同样,如果我将最后一行更改为:
int y = (x <= 10) ? f1() : f2();
然后,一切都很好。
作为最后一条信息,C 和 C++ 都不会注意到:
(x <= 10) ? f1() : f2();
表达式中使用了三元运算符。对于语句,您可以使用 if 语句。这就是定义语法的方式。期间.