为什么下面的代码给我一个错误?
int n = 30000; // Some number
for (int i = 0;
0 <= n ? (i < n) : (i > n);
0 <= n ? (i++) : (i--)) { // ## Error "not a statement" ##
f(i,n);
}
最佳答案
这是因为 for
循环已在 Java Language Specification 中以这种方式定义。 .
14.14.1 The basic for statement
BasicForStatement:
for ( ForInit ; Expression ; ForUpdate ) Statement
ForStatementNoShortIf:
for ( ForInit ; Expression ; ForUpdate ) StatementNoShortIf
ForInit:
StatementExpressionList
LocalVariableDeclaration
ForUpdate:
StatementExpressionList
StatementExpressionList:
StatementExpression
StatementExpressionList , StatementExpression
所以它必须是 StatementExpression
或多个 StatementExpression
s 和 StatementExpression
定义为:
StatementExpression:
Assignment
PreIncrementExpression
PreDecrementExpression
PostIncrementExpression
PostDecrementExpression
MethodInvocation
ClassInstanceCreationExpression
0 <= n ? (i++) : (i--)
不是这些,所以它不被接受。 i += ((0 <= n) ? 1 : -1)
是一个作业,所以它有效。
关于java - 为什么我不能使用? : operators in the 3rd argument of for loops in Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22578222/