這是一個上海貝爾實驗室的筆試問題,如下:
#include<stdio.h>
#include<string.h>
int minux(int a, int b)
{
return a-b;
}
int main(int argc, char *argv[])
{
int c=4;
printf("the number : %d\n", minux(++c, ++c);
return 0;
}
問,這個程序運行的結果是多少?
想了下,應該輸出的是-1
不對,在程序裏跑了一次,居然執行的結果是1,這有點意思
查看相關的資料,原來這跟編譯器有關,因爲有的編譯器的函數是從右往左入棧的,所以這樣解釋起來就明白了,先b++,然後
a++,結果就如上面所給的輸出是一樣的了