为什么我不需要for循环和if语句括号

pri*_*791 5 c++ for-loop if-statement brackets

我不明白为什么在这种情况下我不需要括号

for (int i = 0; i < 10; i++) 
    if (num[i] < min) 
        min = num[i];
Run Code Online (Sandbox Code Playgroud)

为什么我在这种情况下需要括号

int num[10], min;
for (int i = 0; i < 10; i++) {
        cout << "enter 10 numbers" << endl;
        cin >> num[i];
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*ker 13

无论是forif必须遵循一个"说法"."语句"可以是一个简单的语句,比如min = num[i];更复杂的语句,if (num[i] < min) min = num[i];或者它可以是复合语句(即用大括号括起来的零个或多个简单语句),如{ std::cout << "enter 10 numbers\n"; std::cin >> num[i]; }

有些人认为使用语法冗余花括号的简单语句是一种很好的风格.其他人没有.


Lig*_*ica 8

因为你没有.

它们是可选的.就是这样.

如果你不使用大括号将多个语句组合成一个,那么只有第一条语句下面forif序言认为,构造的一部分.(但这条规则是可传递的,所以你的任务是你if的一部分for!)

重要的是要注意缩进没有效果.

为了清楚起见,许多人认为[引证需要]你应该总是使用牙箍.


Pre*_*onM 6

单语句 if 和 for 循环不需要花括号。这里讨论了为什么即使对于单个语句,花括号也是一种很好的做法。

在单行 if 或 loop 中使用大括号(即 {})的目的是什么?

  • 陈述。没有经验的开发人员可能认为将多个语句放在一行代码中(文本)会使它们成为“单行” (2认同)

Nat*_*ica 6

for 循环的语法如下

for (init, condition, post) statement;
Run Code Online (Sandbox Code Playgroud)

现在这意味着紧跟在 the for(...)will之后的任何单个语句都将成为循环体,并且将成为循环运行的内容。

然后我们有 if 语句,它的语法为

if(condition) statement;
Run Code Online (Sandbox Code Playgroud)

所以我们可以看到整个如果

if (num[i] < min) 
    min = num[i];
Run Code Online (Sandbox Code Playgroud)

只是一个语句,它是 for 循环所需的全部。

当循环或条件中有不止一行时,我们使用 {} 的原因是让我们使用多语句循环/条件,因为整个块被视为单个语句。