一個很難明白的題目

這是一個上海貝爾實驗室的筆試問題,如下:

#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++,結果就如上面所給的輸出是一樣的了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章