1. 程式人生 > 其它 >C語言-函式呼叫優先順序

C語言-函式呼叫優先順序

函式呼叫的優先順序,按從右到左的方式

#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,從結果上來看與實際不符