scanf并将char保持为整数

时间:2013-07-14 20:28:27

标签: char int scanf

我无法得到它。 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]

1 个答案:

答案 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似乎不太可能。我怀疑帖子与代码和输入/输出都不匹配。