scanf and keeping char as an integer

2019-10-18 09:10发布

我只是无法得到它。 char是一个整数,对不对? 所以我可以做

int var;
scanf("%d", &var);
I:[65]
printf("%c", var);
o:[A].

那么为什么wrog做:

char var;
scanf("%d", &var);
I:[A]
printf("%d", var)
O:[-1236778]

Answer 1:

在第二个scanf()

scanf("%d", &var);

scanf()解析的打印指令%d 。 这意味着争论&var预计地址的int 。 相反,地址为char给出。 一个规模int肯定比一的大小大char 。 由于scanf()试图将放在int尺寸量为只是针对一个“炭”的地方,奇怪的事情都可能发生的scanf()函数可以将数据是不应该的地方。 试图把10磅土豆PF在5磅重。

进一步-看来值得怀疑scanf("%d", &var); 成功读取输入“A”。 scanf()将看到A ,而因为它不是一个数字,将放弃扫描,以满足一个文本输入int定义。 因此,你scanf("%d", &var)可能返回的值0 ,因此没有放入任何 var 。 保存您的熏肉,因为如果它没有,它会放在空间应该不是数据。

最后printf("%d", var)然后简单地打印出var ,其从未设定,让你获得什么恰好是焦炭。 -1236778似乎不太可能。 我怀疑该职位不匹配代码或在一些小步伐的输入/输出。



文章来源: scanf and keeping char as an integer
标签: char int scanf