c - 控制流和循环:为什么程序的输出是 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。
解决方案
输出应该是000
. 如果is%3d
将打印两个空格:将打印零而不是空格。的返回值是已打印的字符数,因此您崩溃的循环将按原样终止。i
0
%03d
printf
k < 3
0
您提供的相当奇怪的代码中没有未定义的行为。因此,如果缺少前两个零,则您使用的编译器和/或运行时环境有缺陷。
推荐阅读
- rest - 在分布式环境中调用一堆 REST API
- java - 使用 Spring Data Redis 序列化时如何正确忽略类成员?
- java - 在 poi 中复制过滤后的数据
- ios - Quickblox iOS SDK:注册后无法发送通知
- python - return HttpResponse("") 的含义
- shell - groovy + shell:转义字符
- netlogo - 在设置时创建一次海龟,而不是在每个滴答声中
- pandas - 使用 matplotlib 绘制 pandas 数据框时管理 xticks
- java - 为什么不同类型的空集合相等?
- angular - 如何在tinymce编辑器中绑定click或keydown事件