【发布时间】:2019-07-21 18:37:44
【问题描述】:
#include <stdio.h>
int main(void) {
int nr = 5;
char castChar = (char)nr;
char realChar = '5';
printf("The value is: %d\n", castChar);
}
如果上面的代码被编译,输出将是:
The value is: 5
但是如果编译下面的代码,控制台将输出值 53 代替。为什么它的打印与打印“castChar”时的打印不同?
#include <stdio.h>
int main(void) {
int nr = 5;
char castChar = (char)nr;
char realChar = '5';
printf("The value is: %d\n", realChar);
}
【问题讨论】:
-
因为字符串 '5' 的 ASCII 值是 53。如果要将其打印为字符串,请使用 %c
-
我知道 ASCII 是什么以及 printf 是如何工作的。再看一下代码,castChar 是一个类型转换的char。它打印出 5,这是从 ASCII 转换而来的值。 realChar 被初始化为一个字符,而不是类型转换为 castChar。两者都是字符,但它们打印出不同的值。
-
(char)5和'5'的意思完全不同。 -
@OldProgrammer
'5'不是字符串,而是字符。字符串来自" "C 中的双引号。stackoverflow.com/a/3683613/7508077
标签: c types printf typecasting-operator