为什么使用 %c 和 %d 格式化时此 C 代码的输出不同

pas*_*ure 2 c printf ascii string-formatting format-specifiers

看看下面的一段代码:

#include <stdio.h> 

int main() 
{ 
  int i;

  for (i = 48; i < 58; i++)
  {
    printf("%d", i);
  }
return 0; 
}
Run Code Online (Sandbox Code Playgroud)

输出是:48495051525354555657 但是,如果你改变printf("%d", i);printf("%c", i);输出变为:0123456789

不应同时输出48495051525354555657为什么代时输出不同的d使用c

Era*_*lon 8

因为%ci被解释为一个字符,如果你看一下ASCII表可以看出,48代表字符'0'49'1'


小智 6

%d打印出一个数字和%c一个字符。0-9 的 ASCII 代码是 48-57,因此它将这些数字打印为字符。