为什么第一个是无限循环?

时间:2015-10-27 03:30:02

标签: c infinite-loop

我很困惑..打印出第一个c,即1,然后c变为2然后它应该打印c,这是2 ..     int c = 1;

while (c<=10)
    printf("%d\n", c);
    c = c + 1;   

while (c<=10)
{
    printf("%d\n", c);
    c = c + 1;
}

6 个答案:

答案 0 :(得分:3)

当While循环后面没有

{
}

下一个语句只被认为是循环的一部分 所以你的代码运行while循环无限期地打印c的值,因为while循环运行的条件总是为真   用大括号括起print和increment语句!

答案 1 :(得分:0)

这是因为缩进块周围没有花括号,所以只有printf是while的一部分。

答案 2 :(得分:0)

对于没有大括号的while循环,它在while循环后需要单个语句。

所以在第一个while循环中,while只接受printf语句。

如果它括在括号中,则将其作为语句块。如果没有括在括号中,则只需要一个语句。

因此,它不会增加C的值。

答案 3 :(得分:0)

这是因为如果你不使用{}只在第一行使用while applis,那就是你有类似的东西

while (c<=10)
    printf("%d\n", c);

c永远不会改变并且循环永远运行

答案 4 :(得分:0)

您只是循环遍历print语句,并且变量没有增加。

c = c + 1;

未被召唤。 { }定义while循环的范围而不是制表符。

答案 5 :(得分:0)

变化:

while (c<=10)
printf("%d\n", c);
c = c + 1;   

为:

while (c<=10){
    printf("%d\n", c);
    c = c + 1;   
}

原因是如果在while之后没有括号,则只执行它后面的第一条指令。