7

根据 K&R C 第 1.6 节,achar是一种整数。那么我们为什么需要%c. 为什么我们不能%d用于一切?

4

6 回答 6

29

因为%d将打印 的数字字符代码char

printf("%d", 'a');

打印97(在 ASCII 系统上),而

printf("%c", 'a');

打印a

于 2012-06-08T11:30:14.950 回答
4

虽然它是一个整数,但它%c会将其数值解释为显示的字符值。例如字符a

如果你使用%d你会得到一个整数,例如 97,字符的内部表示a

对比

用于%c显示字符 ' a' 本身(如果使用 ASCII)

即,这是内部表示与外部目的解释的问题(例如 with printf

于 2012-06-08T11:30:39.503 回答
1

粗略地说,%c打印字符的 ASCII 表示。%d打印其十进制值。

于 2012-06-08T11:30:30.143 回答
1

如果您使用%c,您将打印(或扫描)一个字符或字符。如果您使用%d,您将打印(或扫描)一个整数。

printf("%d", 0x70);

机器如何知道您要输出一个字符,而不是其等效的 ASCII 值?

于 2012-06-08T11:31:23.657 回答
-1

%d 认为 char 是 32 位并像整数一样打印它,但是 %c 将 char 的 int 值转换为 ascii 字符然后打印它。

于 2012-06-08T11:31:39.130 回答
-1

%d用于打印decimal(integer)数字,而%c用于打印character。如果您尝试打印具有%d格式的字符,计算机将打印ASCII字符的代码。

于 2014-10-26T15:30:57.253 回答