【发布时间】:2013-07-25 15:40:39
【问题描述】:
我无法为以下代码的输出给出适当的理由。谁能帮帮我。
int main()
{
int i;
char ch;
scanf("%c",&i);
scanf("%d",&ch);
printf("%d\n%c",i,ch);
return 0;
}
输入输出:
input:
a
45
output:
0
-
【问题讨论】:
-
你期望输出是什么?
-
一个很好的例子说明为什么你应该不使用
scanf。你告诉函数写一个char,然后你传递一个int的地址。你告诉函数写一个int,然后你传递一个char的地址。两者都是未定义的行为,所以你可以得到任何东西(包括程序崩溃)。 -
“我知道这是错误的代码 - 为什么它会出错?”
-
@LuchianGrigore 但是你知道它应该可以正常工作,它真的应该!!!!one11
-
当我运行 gdb 时,在第一次 scanf() 后 i 的值为 97,但在第二次 scanf 后将值更改为 0。我想知道进行这些更改的原因是什么跨度>