project.manager.email
如果上面的代码被编译,输出将是:
#include <stdio.h>
int main(void) {
int nr = 5;
char castChar = (char)nr;
char realChar = '5';
printf("The value is: %d\n", castChar);
}
但是,如果编译以下代码,则控制台将改为输出值53。为什么它的打印方式与打印“ castChar”时的打印方式不同?
The value is: 5
答案 0 :(得分:3)
因为castChar
的值是整数值5
,而realChar
的值是字符值的整数编码 {{1} }(ASCII 53)。这些不是相同的值。
铸造与它无关。或者,更准确地说,将'5'
强制转换为nr
不会给您字符值 char
,而只是将整数值'5'
分配给较窄的类型。
如果期望输出5
,则需要使用5
说明符而不是realChar
说明符打印%c
。
答案 1 :(得分:1)
secondArray
和(char)5
是不同的东西。
文字'5'
是代表字符5的整数值。其值取决于平台。假设字符的ASCII表示形式为53。
文字'5'
是已转换为类型(char)5
的整数5。这意味着它在强制转换后仍保留5的值。