【发布时间】:2019-01-24 09:16:18
【问题描述】:
我认为描述问题的最佳方式是实际显示这个简单代码的输出: Image contains code and output
#include<stdio.h>
int main()
{
int a=5,b;
b=a-++a;
printf("%d %d",a,b);
return 0;
}
如您所见,返回的值在逻辑上是正确的。 ++a 将 a 的值增加到 6。然后 b=6-6=0。
但是,当我使用 scanf 将 'a' 的值作为用户输入时,会发生以下情况: Image contains code and output
#include<stdio.h>
int main()
{
int a,b;
scanf("%d",&a);
b=a-++a;
printf("%d %d",a,b);
return 0;
}
结果不应该相同还是我在这里遗漏了一些简单的东西?
【问题讨论】:
-
嗨,欢迎来到 stackoverflow。请不要发布代码图像,在您的问题中写下代码。见How to Ask和minimal reproducible example
-
添加代码,谢谢。
-
它们都是未定义的行为。所以没有太多可以解释输出的差异。
-
@Irtiza :还请添加您遇到的问题的输出(即不仅仅是在图像上) - 然后您可以完全删除图像。