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

时间:2016-09-19 18:19:28

标签: c++ if-statement for-loop brackets

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

for (int i = 0; i < 10; i++) 
    if (num[i] < min) 
        min = num[i];

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

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

9 个答案:

答案 0 :(得分:12)

forif都必须跟一个&#34;声明&#34;。 A&#34;陈述&#34;可以是一个简单的语句,如min = num[i];,一个更复杂的语句,如if (num[i] < min) min = num[i];,或者它可以是复合语句(即用大括号括起来的零个或多个简单语句),如{ std::cout << "enter 10 numbers\n"; std::cin >> num[i]; }

有些人认为使用语法上冗余的花括号来处理简单的语句是很好的风格。其他人不会。

答案 1 :(得分:8)

因为你没有。

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

如果您不使用大括号将多个语句分组为一个,则只有forif前导后面的第一个语句才被视为该构造的一部分。 (但此规则具有传递性,因此您的作业属于if for的一部分!)

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

为了清楚起见,许多人认为 [citation needed] 总是使用大括号。

答案 2 :(得分:4)

单个语句if和for循环不需要花括号。下面讨论为什么花括号即使对于单个陈述也是一种好习惯。

What's the purpose of using braces (i.e. {}) for a single-line if or loop?

答案 3 :(得分:3)

for循环的语法为

for (init, condition, post) statement;

现在这意味着for(...)之后的任何一个语句都将成为正文,并将成为循环运行的语句。

然后我们有if语句,其语法为

if(condition) statement;

所以我们可以看到整个if

if (num[i] < min) 
    min = num[i];

只是一个语句,这就是for循环所需的全部内容。

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

答案 4 :(得分:1)

  1. 如果是FOR循环:您不必使用大括号,但根据我的知识,您应该这样做。首先它增加了代码的可读性,它可以为您节省无用的调试代码。对于未来的读者,Oracle的代码约定清楚地表明您应该始终使用大括号。

  2. 如果是IF语句:对于单个语句,您不必使用大括号,但如果要在IF块中组合多个语句,则必须使用curely大括号。< / p>

  3. 我希望我的意见对你有用。

答案 5 :(得分:1)

在轨道上的轻盈比赛总结得很完美 - 这只是一个好习惯的问题。许多程序员可能不会因为纯粹的懒惰而以这种方式使用括号(毕竟它是可选的)。

如果您希望代码易于阅读,甚至更重要的是易于调试,那么您应该养成在每个for循环和if语句之后使用括号的习惯。

一段时间后,它可能会变得乏味,但就像我说的那样 - 这只是一个好的做法问题。

答案 6 :(得分:1)

我们基本上使用括号来保持代码干净,因为我知道编译编译器并不是那么聪明所以如果你在循环或if条件中有多个语句那么我们使用括号(花括号{})只是让编译器知道大括号中的每个语句都是循环的一部分或if语句的一部分。

答案 7 :(得分:0)

不建议不要使用大括号,如回复所示。

for (int i = 0; i < 10; i++) /*For-loop only has one executable
                              *statement in its scope, the if-statement, 
                              *so doesn't need braces.*/
    if (num[i] < min) /*If-statement contains only one executable
                       *statement its scope, so doesn't need braces*/
        min = num[i]; //One line of code to execute.

坚持使用牙套,它会让您的生活更轻松。

答案 8 :(得分:0)

好。没有支架的循环很容易搞砸,特别是当程序员累了。

但是编译器可以理解它。

示例1:以;结尾并且紧跟在for语句后面的完整行属于for语句的范围。但它之后的行不会。只是尝试编译并运行它。

#include <iostream>
int main(void){
    for (int i = 0; i < 10; i++) 
        std::cout << "in scope of for" << std::endl;
    std::cout << "out of scope of for" << std::endl;
}

示例2:if语句

相同
#include <iostream>
int main(void){
    if (1 == 1)
        std::cout << "in scope of if" << std::endl;
    std::cout << "out of scope of if" << std::endl;
}

示例3:

#include <iostream>
int main(void){
    int num[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    int min = num[0];
    for (int i = 0; i < 10; i++) 
            if (num[i] < min) //this if belong to the for above
                min = num[i]; //this line belong to `if` above
                              //so this line also belong to the `for`
                              //as the `for` own the `if`
}