根据K&R C第1.6节,char
是整数类型。那么为什么我们需要%c
?为什么不能用%d
代替所有东西?
因为%d
会输出char
的数字字符代码:
printf("%d", 'a');
在 ASCII 系统中,输出 97
。
printf("%c", 'a');
输出 a
。
scanf
:%d
读取并转换数字字符串,而 %c
则读取并转换单个字符。 - John Bode%c
时,虽然它是一个整数,但它会将其数字值解释为要显示的字符值。例如对于字符a
:%d
,您将获得一个整数,例如97,这是字符a
的内部表示。%c
可以显示字符'a
'本身(如果使用ASCII)。printf
)。%c
打印字符的 ASCII 表示形式。%d
打印其十进制值。如果您使用%c
,您将打印(或扫描)一个字符或char。如果您使用%d
,您将打印(或扫描)一个整数。
printf("%d", 0x70);
机器怎么知道你想输出一个字符,而不是它的 ASCII 值?
%d
用于打印 十进制(整数)
数字,而 %c
用于打印 字符
。如果您尝试使用 %d
格式打印字符,则计算机将打印该字符的 ASCII
码。
%d认为char是32位并像整数一样打印,但%c将char的int值转换为ASCII字符然后打印。
printf
需要知道参数的大小才能打印它(适当地转换类型,可以这么说)。char
大小为1,int
至少有1个大小,在大多数机器上更多。此外,使用%c
时,您要打印一个字符,而不是数字。 在D
语言中,您将始终使用%s
,让编译器担心类型问题。 - Matejint
更小的整数类型在传递到可变参数函数时会被提升为int
。 - Pubby