我正在尝试在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的行为?
答案 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);
}