在下面的代码中,如何将char
数据类型分配给整数变量(如在char数据类型字母表中以单引号编写),并且在打印char数据类型时,它使用%d下标代替使用%c?
#include <stdio.h>
int main()
{
char a = 30, b = 40, c = 10;
char d = (a * b) / c;//a char value is storing integer value ?how ?
printf ("%d ", d);
return 0;
}
char数据类型如何存储整数值
答案 0 :(得分:3)
char
只是小整数,可以保存范围[-128;127]
中的值。
(在某些系统上,它可能是[0;255]
。在非常罕见的平台上,它可以有另一个大小,但你可能永远不会看到这些情况。)
像'0'
这样的字符文字只是相应符号的代码。例如,'0'
等于48
。
(在大多数编码上。另一个值非常罕见。)
为什么%d
适用于char
?因为当您将char
和short
传递给...
函数参数时,它们会自动转换为整数。
printf
被声明为printf(const char *, ...);
。
答案 1 :(得分:0)
另外,计算30 * 40
不会溢出,因为操作数被提升为int
类型并在除法后转换回char
。
当传递给printf
之类的可变函数时,char
再次被提升为int
。
此外:对于float
类型,当传递给printf
和double
时也会被提升。这就是printf
格式说明符%f
对float
和double
都起作用的原因。对于计算,是否将float
提升为double
是一个实施决策。