【发布时间】:2020-05-28 23:20:51
【问题描述】:
看看下面这段代码:
#include <stdio.h>
int main()
{
int i;
for (i = 48; i < 58; i++)
{
printf("%d", i);
}
return 0;
}
输出为:48495051525354555657
但是,如果您将 printf("%d", i); 更改为 printf("%c", i);,则输出变为:0123456789
不应该都输出48495051525354555657为什么用c替换d时输出不同?
【问题讨论】:
-
@Bathsheba 是吗?根据this,
%c需要一个int,然后将其转换为unsigned char。 -
@Blaze:如果我错了,请回答,如果我得到纠正,我会投票!
-
@Bathsheba ha,有人忍着我。 :) 老实说,我还以为是 UB,直到我查到它。
-
"%d"->"%d "输出会更清晰一些 -
也可以试试
for (i = '0'; i <= '9'; i++) printf("%d:%c ", i, i);
标签: c printf ascii string-formatting format-specifiers