#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