为了账号安全,请及时绑定邮箱和手机立即绑定

在if条件中声明变量且没有大括号时出现编译器错误

在if条件中声明变量且没有大括号时出现编译器错误

子衿沉夜 2019-12-03 15:17:05
为什么第一个if编译正确,而第二个编译失败?if(proceed) {int i;} // This compiles fine.if(proceed) int i;// This gives an error. (Syntax error on token ")", { expected after this token)
查看完整描述

3 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

来自Java语言规范。


    区块:

            { BlockStatements opt }


    BlockStatements:

             BlockStatement 

            BlockStatements  BlockStatement


    BlockStatement:

             LocalVariableDeclarationStatement 

            ClassDeclaration 

            语句


    IfThen声明:

            if(表达式)语句

似乎int i是一个LocalVariableDeclarationStatement,而不是一个Statement。因此它不起作用。


查看完整回答
反对 回复 2019-12-03
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

这是因为它不是有用的代码。如果您有一个不带大括号({})的if语句,则仅执行if之后的第一行/语句。因此,如果仅声明局部变量,则不能在其他任何地方使用它。因此,声明它绝对是多余的。


if(proceed){

int i= 0;

 // variable i can be used here

//...

}


if (proceed) int i; // i can not be used anywhere as it is a local variable


查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 746 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信