我就是不明白。Char 是一个整数,对吧?所以我可以
int var;
scanf("%d", &var);
I:[65]
printf("%c", var);
o:[A].
那么为什么要这样做:
char var;
scanf("%d", &var);
I:[A]
printf("%d", var)
O:[-1236778]
在第二scanf()
scanf("%d", &var);
scanf()
解析的打印指令%d
。这意味着该参数 &var
应为 的地址int
。而是char
给出了 a 的地址。a的大小int
肯定大于 a 的大小char
。由于scanf()
尝试将int
大小数量放入仅用于“字符”的位置,因此 scanf() 可能会发生奇怪的事情,可能会将数据放置在不应该放置的位置。试图将 10 磅 pf 土豆放入 5 磅的袋子中。
scanf("%d", &var);
此外 -成功读取输入“A” 似乎值得怀疑。scanf()
会看到A
,并且由于它不是数字,因此会放弃扫描符合int
定义的文本输入。因此,您可能返回了scanf("%d", &var)
一个值,0
因此没有在. 保存你的培根,因为如果它这样做了,它会将数据放置在它不应该放置的空间中。var
然后最后printf("%d", var)
只是简单地打印出var
从未设置过的内容,因此您可以得到任何发生在 char 中的内容。 -1236778
似乎不太可能。我怀疑该帖子与代码或输入/输出不匹配。