c - 在同一个 for 循环中递增和打印变量

标签 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 的行为?

最佳答案

问题是,您在这里缺少一个 block 作用域

声明

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

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

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

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

另一方面,当您注释 x++; 语句时,printf() 语句被视为循环体。

您需要使用大括号强制执行 block ,例如

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

关于c - 在同一个 for 循环中递增和打印变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53960962/

相关文章:

c++ - short 没有被正确打印 c++

c - SQLITE 基本语法

c - 如何将一棵简单的树写入文件并读回?

scope - 如何在 Julia 中获取 `do` block 的值?

java - 为什么 Kotlin print 语句不需要范围澄清?

c++ - 需要范围、运算符、函数错误帮助

c - 检查数组值是否为 NULL,即是否已设置

c - C 中的可见性

c - 打印一个结构成员,该成员是指向另一个结构的指针?

c - 找出sprintf中 "%f"格式的字段长度