为什么大括号不是强制性的(如下所示)?
Why are braces not mandatory (as shown below)?
现在每个人都在说,如果你想在一个控制语句中使用多个语句,则必须将它们包含在大括号中。但是,如果您这样使用:
if(condition) //first if statement
if(condition) //if statement nested inside the first
System.out.println("test"); //statement inside the second if statement
代码应该会导致错误,因为第二个 if 语句(没有分号)在第一个没有大括号的里面,它完成了第一个 if 语句的限制。因此 println 语句的范围应该在第一个 if 语句之外。因此上面的代码应该等价于
if(condition) {
if(condition)
}
System.out.println("test");
但事实并非如此。第一个代码运行成功。为什么?
因为条件语句包含它限定的语句。
大括号不是 if
语句语法的一部分。它的语法很简单:
"if" "(" <expression> ")" <statement>
或者
"if" "(" <expression> ")" <statement> "else" <statement>
一种语句是块语句,其语法为:
"{" <statement>... "}"
其中 <statement>...
表示“零个或多个 <statement>
”。
块语句可以包含 if-statement(或任何其他类型的语句)。但它不能将语句切成两半。而 if (condition)
只是语句的一半。
你的问题是这样开始的:
Now everyone speaks that if you wanna use multiple statements inside a control statement, it is mandatory to include them inside braces.
这是千真万确的。您在这里遇到的细微差别是某事是单个语句而不是多个语句的含义。
正如@rici 指出的那样,在大多数编程语言中,if 语句由某种条件表达式和条件为真时执行的受保护语句组成。从这个意义上讲,if 语句必须在其中包含一些语句才能在语法上正确。
所以让我们看看你的陈述,但要做到 bottom-up。声明
System.out.println("Test");
被视为单个语句。同样,
if (condition)
System.out.println("Test");
也是一个单一的条件语句。然而,
if (condition)
本身不是有效的条件语句;这将是一个语法错误。
这意味着
if (condition1)
if (condition2)
System.out.println("Test");
是一个单一的条件。具体来说,它是一个条件为condition1
的条件。声明是守卫也是有条件的。该条件有条件 condition2
并保护打印语句。
现在每个人都在说,如果你想在一个控制语句中使用多个语句,则必须将它们包含在大括号中。但是,如果您这样使用:
if(condition) //first if statement
if(condition) //if statement nested inside the first
System.out.println("test"); //statement inside the second if statement
代码应该会导致错误,因为第二个 if 语句(没有分号)在第一个没有大括号的里面,它完成了第一个 if 语句的限制。因此 println 语句的范围应该在第一个 if 语句之外。因此上面的代码应该等价于
if(condition) {
if(condition)
}
System.out.println("test");
但事实并非如此。第一个代码运行成功。为什么?
因为条件语句包含它限定的语句。
大括号不是 if
语句语法的一部分。它的语法很简单:
"if" "(" <expression> ")" <statement>
或者
"if" "(" <expression> ")" <statement> "else" <statement>
一种语句是块语句,其语法为:
"{" <statement>... "}"
其中 <statement>...
表示“零个或多个 <statement>
”。
块语句可以包含 if-statement(或任何其他类型的语句)。但它不能将语句切成两半。而 if (condition)
只是语句的一半。
你的问题是这样开始的:
Now everyone speaks that if you wanna use multiple statements inside a control statement, it is mandatory to include them inside braces.
这是千真万确的。您在这里遇到的细微差别是某事是单个语句而不是多个语句的含义。
正如@rici 指出的那样,在大多数编程语言中,if 语句由某种条件表达式和条件为真时执行的受保护语句组成。从这个意义上讲,if 语句必须在其中包含一些语句才能在语法上正确。
所以让我们看看你的陈述,但要做到 bottom-up。声明
System.out.println("Test");
被视为单个语句。同样,
if (condition)
System.out.println("Test");
也是一个单一的条件语句。然而,
if (condition)
本身不是有效的条件语句;这将是一个语法错误。
这意味着
if (condition1)
if (condition2)
System.out.println("Test");
是一个单一的条件。具体来说,它是一个条件为condition1
的条件。声明是守卫也是有条件的。该条件有条件 condition2
并保护打印语句。