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

Why is the first one an 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;
}

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

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

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

如果用大括号括起来,则将其视为语句块。如果它没有被括在大括号中,它只需要一个语句。

所以,不会增加C的值。

当 While 循环后面没有

{
}

下一条语句只被认为是循环的一部分 所以你的代码 运行s while 循环无限期打印 c 的值,因为 while 循环到 运行 的条件总是 true 将打印和增量语句括在花括号中!

这是因为如果你不使用 {} while 只适用于第一行,那就是你有类似

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

c 永远不会改变,循环永远运行

您只是在打印语句上循环,变量没有递增。

c = c + 1;

未调用。 { } 定义 while 循环的范围而不是制表符。

变化:

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

至:

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

原因是如果while后面没有括号,那么就只执行后面的第一条指令