回覆列表
  • 1 # 使用者3916807372217

    可以的。

    在C語言中,函式呼叫的方式有多種,在函式呼叫中還應該注意的一個問題是求值順序。所謂求值順序是指對實參列表中各個引數是自左向右使用,還是自右向左使用。對此,各系統的規定不一定相同。

    __cdecl呼叫規則就是C呼叫規則。按從右至左的順序壓引數入棧,由呼叫者把引數彈出棧。切記:對於傳送引數的記憶體棧是由呼叫者來維護的。

    返回值在EAX中因此,對於象printf這樣變引數的函式必須用這種規則。編譯器在編譯的時候對這種呼叫規則的函式生成修飾名的餓時候,僅在輸出函式名前加上一個下劃線字首,格式為_functionname。

    擴充套件資料

    示例:

    在VC6.0和C-Free 5.0下執行以下程式碼。

    #include

    int main(){

    int i=8;

    printf("%d %d %d %d\n",++i,++i,--i,--i);

    return 0;

    }

    執行結果:

    8 7 6 7

    可見VC 6.0是按照從右至左的順序求值。如果按照從左至右求值,結果應為:

    9 10 9 8

  • 中秋節和大豐收的關聯?
  • 在行駛過程中,剎車和油門一起踩下,會有什麼結果?