许多编程语言需要围绕if
条件的括号。
例如:
if (x < 50)
{
}
为什么不能这样写,没有括号:
if x < 50
{
}
假设语言设计师是务实的人,为什么需要括号?
答案 0 :(得分:2)
在C中,if
实际上是一个逗号运算符,而不仅仅是一个表达式。人们可以写:
int i = 0;
if (i = i + 1, i/2 > 0) {
}
所以你需要括号(实际上是括号)。例如while()
也是如此。
return
运算符只接受一个表达式,因此它不需要括号:
return i + 1;
虽然很多程序员仍然写得像:
return (i + 1);
答案 1 :(得分:1)
真正简短的回答是&#34;因为他们的语法/语法语言定义&#34;并且它与表达式中的括号无关。
在语言定义中,创建者定义了一组开发人员必须遵循的规则。
在C,C ++,Objective C,java,javascript和其他基于C语言的语法中,括号用于他们的语法来定义如何将条件表达式与句子分开执行,但它只是用于定义,因为它是不需要。 Dennis Ritchie(C创建者)本可以用另一种方法将条件表达式与true / false语句分开,但他选择了括号。
# Grammar of "if sentence" in C (in BNF)
<if-statement> ::= if ( <expression> ) <statement>
| if ( <expression> ) <statement> else <statement>
Modula2,Pascal,ADA,Delphi,Oracle PL / SQL和其他基于Modula2的语言不会用括号定义语法,但是他们使用关键字then
将条件表达式与语句分开:
# Grammar of "if sentence" in Pascal (in BNF)
<if-statement> ::= if <expression> then <statement>
| if <expression> then <statement> else <statement>
相同的答案适用于while
和for
等其他句子。
答案 2 :(得分:-2)
简单回答:运算符优先级。记住基本的高中/小学数学:7 * 4 + 3
的答案是什么? 31?还是49?
大括号允许您强制使用自己的OWN优先级,以覆盖语言的自然优先级:
(7 * 4) + 3 -> 31 (the natural answer by BEDMAS rules)
7 * (4 + 3) -> 49
如果您正在谈论{}
,那么允许表达式使用多行块。
没有大括号:
if (...)
a = 1; // only this line is part of the "if"
b = 1; // ignore the indentation - this is always executed
v.s。
if (...) {
a = 1; // part of the "if"
b = 1; // also part of the "if"
}