为什么在c中使用%c?
根据K&R C第1.6节,a为什么在c中使用%c?,c,C,根据K&R C第1.6节,achar是一种整数。那么为什么我们需要%c。为什么我们不能用%d处理所有事情 因为%d将打印字符的数字字符代码: printf("%d", 'a'); 打印97(在ASCII系统上),而 打印a粗略地说,%c打印字符的ASCII表示形式%d打印其十进制值。当它是整数时,%c将其数值解释为字符值以供显示。例如,对于字符a: 如果使用%d则会得到一个整数,例如97,字符a vs 使用%c显示字符“a”本身(如果使用ASCII) 也就是说,这是一个内部表示与外部解释的问题
char
是一种整数。那么为什么我们需要%c
。为什么我们不能用%d
处理所有事情 因为%d
将打印字符的数字字符代码
:
printf("%d", 'a');
打印97
(在ASCII系统上),而
打印
a
粗略地说,%c
打印字符的ASCII表示形式<代码>%d打印其十进制值。当它是整数时,%c
将其数值解释为字符值以供显示。例如,对于字符a
:
如果使用%d
则会得到一个整数,例如97,字符a
vs
使用%c
显示字符“a
”本身(如果使用ASCII)
也就是说,这是一个内部表示与外部解释的问题(例如使用
printf
)如果使用%c
,您将打印(或扫描)一个字符或字符。如果使用%d
,将打印(或扫描)一个整数
printf("%d", 0x70);
机器如何知道您要输出的是字符,而不是其等效的ASCII值?%d认为字符是32位的,并将其像整数一样打印,但%c将字符的int值转换为ASCII字符,然后打印它。
%d
用于打印十进制(整数)
数字,而%c
用于打印字符
。如果尝试打印%d
格式的字符,计算机将打印字符的ASCII
代码。@MaziarBouali不一定。printf
需要知道参数的大小才能打印它(可以说是正确地转换它)。在大多数机器上,char
的大小为1,而int
的大小至少为1。另外,当使用%c
时,您希望打印的是字符,而不是数字。在D
语言中,您总是使用%s
,让编译器担心类型。@MatejNanut不,小于int
的整数类型在传递到变量函数时会升级为int
。@Pubby:谢谢,我不知道。但是,在使用long时仍然存在这种歧义,long是整数,不能(或不应该)使用%d
。不要忘记scanf
:%d
读取和转换数字字符串,其中as%c
读取和转换单个字符。
printf("%d", 0x70);