为什么使用 %c 和 %d 格式化时此 C 代码的输出不同
Why are the outputs of this C code different when formatting with %c and %d
看看下面这段代码:
#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
时输出不同?
%d
打印出一个数字和 %c
一个字符。 0-9 的 ASCII 码是 48-57,因此它将这些数字打印为字符。
因为 %c
将 i
解释为一个字符,如果您查看 ASCII table,您会发现 48
代表字符 '0'
, 49
是 '1'
, 等等
在 C 中,当你想打印一些东西时,你需要提供格式说明符。然后编译器会打印相应的东西。
根据你的问题,%d
说明符用于打印数字,%c
用于打印字符。
因此,当您尝试使用 %c
格式说明符打印整数值时,系统会将 48-57
转换为 char 类型,即 '0'-'9'
。如果你走得更远,它会打印
: ; < = > ? @ A B C and so on.
这是因为系统遵循 ASCII。
%d 是有符号整数的格式说明符,而 %c 是字符的格式说明符。
当使用 %d 时让 i=48 打印整数(打印 48)。
但是当使用 %c 时,48 被视为 ASCII 值,并且 0 被打印为 48
ascii 值
0 = 48
1 = 49
.
.
.
很快
希望你理解按下upvote。 :) ;)
看看下面这段代码:
#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
时输出不同?
%d
打印出一个数字和 %c
一个字符。 0-9 的 ASCII 码是 48-57,因此它将这些数字打印为字符。
因为 %c
将 i
解释为一个字符,如果您查看 ASCII table,您会发现 48
代表字符 '0'
, 49
是 '1'
, 等等
在 C 中,当你想打印一些东西时,你需要提供格式说明符。然后编译器会打印相应的东西。
根据你的问题,%d
说明符用于打印数字,%c
用于打印字符。
因此,当您尝试使用 %c
格式说明符打印整数值时,系统会将 48-57
转换为 char 类型,即 '0'-'9'
。如果你走得更远,它会打印
: ; < = > ? @ A B C and so on.
这是因为系统遵循 ASCII。
%d 是有符号整数的格式说明符,而 %c 是字符的格式说明符。 当使用 %d 时让 i=48 打印整数(打印 48)。 但是当使用 %c 时,48 被视为 ASCII 值,并且 0 被打印为 48 ascii 值 0 = 48 1 = 49 . . . 很快 希望你理解按下upvote。 :) ;)