我无法得到它。 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]
答案 0 :(得分:1)
在第二个scanf()
scanf("%d", &var);
scanf()
解析了print指令%d
。这意味着参数&var
应该是int
的地址。取而代之的是char
的地址。 int
的大小肯定大于char
的大小。由于scanf()
尝试将int
大小的数量放入仅适用于'char'的地方,因此scanf()可能会发生奇怪的事情,因为数据可能是不应该放置的地方。试着将10磅土豆放入5磅重的袋中。
此外,scanf("%d", &var);
成功读取输入“A”似乎令人怀疑。 scanf()
会看到A
,因为它不是数字,所以会放弃扫描符合int
定义的文本输入。因此,scanf("%d", &var)
可能会返回0
的值,因此未在var
中放置任何。保存您的培根,如果它,它会将数据放在空间,它不应该。
最终的printf("%d", var)
只是打印出从未设置的var
,因此您可以 碰巧在char中。 -1236778
似乎不太可能。我怀疑帖子与代码和输入/输出都不匹配。