gpt4 book ai didi

java - 为什么我不能使用? : operators in the 3rd argument of for loops in Java?

转载 作者:IT老高 更新时间:2023-10-28 21:06:57 27 4
gpt4 key购买 nike

为什么下面的代码给我一个错误?

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定义为:

14.8 Expression statements

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com