#include<stdio.h>
#define a(x) (x * x)
int main()
{
int i = 3, j;
j = a(i + 1);
printf("%d", j);
return 0;
}
我想知道为什么程序没有给出输出16
。 (我得到的输出7
。)C程序输出
我明白了点非常多,但如果程序是这样的:
#include<stdio.h>
#define a(x) (x * x)
int main()
{
int i = 3, j, k;
j = a(i++);
k = a(++i);
printf("%d\n%d", j, k);
return 0;
}
那么为什么上面的程序给出以下的输出:
9
49
@Paul在这种特殊情况下,如果它是作业的上下文,有什么关系?也许是这样,也许OP已经很好地将问题简化成了一个最小化的程序,它展示了令他们困惑的行为。我不是说这是一个好问题,我只是说(这一次),这不是一个坏问题,因为它可能是也可能不是家庭作业。除非作业是“为什么这个程序打印7?”,在这种情况下,作业是一个不好的问题。 – 2010-04-25 08:21:06
@帕斯卡尔:主要原因在于它是作业,所以最好提供有用的提示或一般指导而不是完整的解决方案,以便帮助学生学习一些东西。如果它不是家庭作业,那么显然一个完整的解决方案是适当的。 – 2010-04-25 09:02:39
@保罗好点。 – 2010-04-25 09:04:40