将char打印为整数

时间:2019-01-30 17:05:29

标签: c

onload

我认为我至少会收到警告,我正在尝试打印<body>,但变量为int main(){ char a = 65; a=a+5; printf("%d\n",a); }

为什么用这种方式打印没有问题?

2 个答案:

答案 0 :(得分:2)

出于历史原因,字符大都是小整数,并且所有整数算术都以int类型或更广泛的类型进行。软件有时必须将字符用作整数代码,有时还要将其作为要打印的东西使用,因此使用char类型开发的C语言很灵活。

无论在表达式中使用int还是unsigned int,包括函数参数,都可以使用char

如果我们重新设计语言,则可能会将char的字符与char的整数区别开来,并需要进行显式转换才能在它们之间进行转换。但是,语言就是它。

答案 1 :(得分:2)

  

我认为我至少会收到警告,我正在尝试打印%d,但变量为char

“没有问题”,因为"%d"期望int,并且a在传递给int时被转换为printf()@Weather Vane


默认参数 促销

因为a作为printf(const char *, ...)参数传递给...

  

函数原型声明器中的省略号引起参数类型转换在最后声明的参数之后停止。默认参数提升是对尾随参数执行的。 C11dr§6.5.2.27

默认参数 char的促销会将其转换为int 1


1 unsigned时为CHAR_MAX > INT_MAX
(例如:char, int具有相同的位宽和符号度的特殊平台。)

相关问题