首页 > 解决方案 > 控制流和循环:为什么程序的输出是 0 而不是 000?

问题描述

#include <stdio.h>
void main()
{
    int i = 0, k;
    if (i == 0)
        goto label;
        for (k = 0;k < 3; k++)
        {
            printf("hi\n");
            label: k = printf("%03d", i);
        }
}

任何人都可以解释输出是 0 而不是 000 吗?当我在 devc++ 中运行程序时,它会给出输出 000。但在大多数网站中,我发现正确答案是 0。

标签: c

解决方案


输出应该000. 如果is%3d将打印两个空格:将打印零而不是空格。的返回值是已打印的字符数,因此您崩溃的循环将按原样终止。i0%03dprintfk < 30

您提供的相当奇怪的代码中没有未定义的行为。因此,如果缺少前两个零,则您使用的编译器和/或运行时环境有缺陷。


推荐阅读