“把戏”
printf("%c", '0'+5);
获取输出5
仅适用于(十进制)数字,即 0-9。printf("%c", '0'+10)
给出输出:
。为什么?
printf("%c",..)
用于打印单个字符。每个字符都有一个数字代码(参见ASCII 代码)。65 是 的 ASCII 码A
,所以printf("%c", 65)
给出这个字母。printf("%c", 48)
给出字符0
。C 语言允许编写'0'
而不是48
,因此您不必记住 ASCII 代码。C 编译器将任何字符转换为相应的 ASCII 代码之间''
或""
转换为相应的 ASCII 代码。所以上面的代码行是一样的
printf("%c", 48+5);
要将 int 转换为其字符串表示形式,您可以在 C 中这样做:
char repr[12]; // a 32-bit int has at most 10 digits;
// +1 for possible sign; +1 for closing 0-character ("null termination")
sprintf(repr, "%d", 10101); // prints the number into a string
itoa(10101, repr, 10); // does the same thing
printf("%s", repr); // prints the string representing the number
printf("%d", 10101); // does the same thing directly