下面这段代码
int main()
{
char a=a;
printf("%d",a);
}
为什么输出上面的代码8?
如果我将%d
更改为%c
,则不会打印任何内容。
答案 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只是任意垃圾。如果编译器自己尊重它,它会给你一个编译时错误,而不仅仅是一个警告。
事实上,你甚至可能没有得到警告 - .-