在char分配期间存储的值

时间:2016-10-15 13:42:13

标签: c printf

下面这段代码

int main()
{
    char a=a;
    printf("%d",a);
}

为什么输出上面的代码8?

如果我将%d更改为%c,则不会打印任何内容。

2 个答案:

答案 0 :(得分:2)

你必须这样分配:

char a = 'a';

目前,如果char a = a;未定义,则会产生8。

这就是为什么当你printf("%c",a);

时它不能打印出来的原因

固定代码为:

int main()
{
    char a = 'a';
    printf("%c", a);
    return 0;
}

答案 1 :(得分:2)

char a = a;是一个自我初始化,它基本上与没有初始化完全相同。因此,a的值是未定义的。实际上,它的值取决于之前存储在变量位置的内存中的任何内容。

ASCII或Unicode中字母a的数值是97.数字8只是任意垃圾。如果编译器自己尊重它,它会给你一个编译时错误,而不仅仅是一个警告。

事实上,你甚至可能没有得到警告 - .-