for循环中的增量和打印变量

时间:2018-12-28 15:43:48

标签: c scope printf

我正在尝试在for循环中递增变量x并在每次迭代中打印出来。

include <stdio.h>

int x = 0;

void main()
{    
    int c;
    for (c = 1; c <= 5; c++)

        x++;
        printf("%d", x);

}

我想要的输出是:

12345

但是此代码仅打印:

5

当我不增加x时,我可以在每次迭代中打印:

# include <stdio.h>

int x = 0;

void main()
{    
    int c;
    for (c = 1; c <= 5; c++)

        //x++;
        printf("%d", x);

}

输出:

00000

为什么在循环中增加x会改变printf的行为?

2 个答案:

答案 0 :(得分:3)

问题是,您在这里缺少 block范围

声明

for (c = 1; c <= 5; c++)

    x++;
    printf("%d", x);

相同
for (c = 1; c <= 5; c++)
{
    x++;
}
printf("%d", x);

因此,您的打印语句不是循环的一部分。

另一方面,在注释x++;语句时,printf()语句被视为循环的正文。

您需要使用大括号来强制执行该块,例如

for (c = 1; c <= 5; c++)
{
    x++;
    printf("%d", x);
}

答案 1 :(得分:0)

for循环的主体仅包含一个命令,即x++;。请注意,编译器并不关心缩进,而只关心花括号。

写...

for (c = 1; c <= 5; c++) {
    x++;
    printf("%d", x);
}