在C中打印类型转换类型

时间:2019-02-27 22:40:00

标签: c types printf typecasting-operator

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

2 个答案:

答案 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的值。