C語言-函式呼叫優先順序
阿新 • • 發佈:2021-12-30
函式呼叫的優先順序,按從右到左的方式
#include <stdio.h> void main(){ int f(int a,int b) ; int i=2,p; p = f(i,i++); printf("%d\n",p); } int f(int a,int b){ int c; if (a>b){ c = 1; }else if( a == b){ c = 0; }else{ c = -1; } return c; }
實參按從右向左的順序,i++之後i為3,而i++表示式的結果為2,所以實際為p = (3,2),最終判斷為1
#include <stdio.h> void main(){ int f(int a,int b) ; int i=2,p; p = f(i,++i); printf("%d\n",p); } int f(int a,int b){ int c; if (a>b){ c = 1; }else if( a == b){ c = 0; }else{ c = -1; } return c; }
實參按從右向左的順序,++i之後i為3,而++i表示式按從左向右的方式執行的結果為3,所以實際為p = (3,3),最終判斷為0
假如為從左向右執的話,實際應該為p = (2,3),最終結果應該為-1,從結果上來看與實際不符