我就是无法理解。
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);
the scanf()
解析打印指令%d
。这意味着该论证&var
预计是一个地址int
。相反,地址为char
被给予。的大小int
肯定大于a的大小char
. As scanf()
试图放置一个int
size 量放入仅适用于“char”的位置,对于 scanf() 可能会发生奇怪的事情,可能会将数据放置在不应该放置的位置。尝试将 10 磅土豆放入 5 磅重的袋子中。
此外 - 似乎值得怀疑的是scanf("%d", &var);
成功读取输入“A”。scanf()
会看到A
,并且由于它不是数字,因此将放弃扫描满足int
定义。因此你的scanf("%d", &var)
可能返回的值为0
因此没有放置anything in var
。保存你的培根,因为如果这样做了,它就会将数据放置在不应该放置的空间中。
决赛printf("%d", var)
然后简单地打印出var
从未被设置过,所以你得到whatever碰巧在char。-1236778
似乎不太可能。我怀疑该帖子与代码或输入/输出不匹配。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)