为什么使用 %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,因此它将这些数字打印为字符。

因为 %ci 解释为一个字符,如果您查看 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。 :) ;)