我現在想學習C/C++的基礎知識。我正在閱讀Lynda.com上的課程新手在這裏:PC和MAC上的不同結果。爲什麼?
我的問題涉及第4章「來自課程C/C++基礎培訓的宏警告」中的一系列代碼。我已經遵循了所有的安裝程序,以便在PC上的Mac和Eclipse上正確地安裝Xcode和Eclipse。當我在MAC和PC上運行此代碼時,我得到了不同的結果。試圖瞭解爲什麼會發生這種情況,以及我可以如何才能在兩者上獲得相同的結果。
下面是代碼:
// working.c by Bill Weinman <http://bw.org/>
#include <stdio.h>
#define MAX(a, b) ((a) > (b) ? (a) : (b))
int increment() {
static int i = 42;
i += 5;
printf("increment returns %d\n", i);
return i;
}
int main(int argc, char ** argv) {
int x = 50;
printf("max of %d and %d is %d\n", x, increment(), MAX(x, increment()));
printf("max of %d and %d is %d\n", x, increment(), MAX(x, increment()));
return 0;
}
在PC上我得到這樣的結果:
increment returns 47
increment returns 52
max of 50 and 52 is 50
increment returns 57
increment returns 62
increment returns 67
max of 50 and 67 is 62
在Mac上(的Xcode和Eclipse兩者)我得到這樣的結果:
increment returns 47
increment returns 52
increment returns 57
max of 50 and 47 is 57
increment returns 62
increment returns 67
increment returns 72
max of 50 and 62 is 72
爲什麼會發生這種情況,我該怎麼做以確保結果相同?
順便說一句:IDE並不代表任何東西,確切的編譯器和你給它的選項,在幾乎每一種情況下都會決定順序。雖然它在理論上可能會隨着程序的每次執行而改變。 – Deduplicator 2014-12-05 17:46:52
@AdrianoRepetti幾乎肯定是一個dup,但因爲我對這個問題有一個答案,我不想重複關閉它。 – 2014-12-05 17:57:30