【发布时间】:2016-09-19 15:23:29
【问题描述】:
我有以下程序。
#include<stdio.h>
int main()
{
char a='b';
int b=11299;
char d[4]="abc";
printf("value of a is %d\n",a);
printf("value of b is %c\n",b);
printf("value of c is %d\n",*d);
char *c=d;
c=c+1;
printf("c is %d\n",*c);
}
我对 %d 格式说明符有点困惑。我在想它会打印 4 个字节的数据。但是从上面的程序(第一个和最后一个 printf)可以明显看出,当使用 char 参数时它只打印一个字节。为什么 %d 只打印一个字节?它如何知道要打印多少字节?
【问题讨论】:
-
这是basic MSVC page 关于
printf格式说明符,包含指向更多详细信息的链接,例如宽度。普通的%d说明符将给定的参数打印为int,使用尽可能多的数字。 -
当
a被传递给printf()时,它会被编译器提升为int。 -
char被提升为int。 -
它既不打印 1 字节也不打印 4 字节。根据
%d,它期望并打印一个int值。%c类似(嗯,char实际上是一个字节,所以...)
标签: c printf format-specifiers