如何为char数据类型分配整数值?

时间:2015-04-09 19:51:52

标签: c

在下面的代码中,如何将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数据类型如何存储整数值

2 个答案:

答案 0 :(得分:3)

char只是小整数,可以保存范围[-128;127]中的值。
(在某些系统上,它可能是[0;255]。在非常罕见的平台上,它可以有另一个大小,但你可能永远不会看到这些情况。)

'0'这样的字符文字只是相应符号的代码。例如,'0'等于48
(在大多数编码上。另一个值非常罕见。)


为什么%d适用于char?因为当您将charshort传递给...函数参数时,它们会自动转换为整数。
printf被声明为printf(const char *, ...);

答案 1 :(得分:0)

另外,计算30 * 40不会溢出,因为操作数被提升为int类型并在除法后转换回char

当传递给printf之类的可变函数时,char再次被提升为int

此外:对于float类型,当传递给printfdouble时也会被提升。这就是printf格式说明符%ffloatdouble都起作用的原因。对于计算,是否将float提升为double是一个实施决策。