2017-04-23 57 views
-3

我正在使用fgetc從文本文件,一次一個字符,但由於某種原因,它重新排序字符的文本文件流。該文本文件包含有類似「ABC」C fgetc奇怪的行爲,當同時用作參數到相同的功能

void newFunction(int i, int j, int k); 

int main() 
{ 
    FILE *fp; 
    /...opens text file.../ 
    newFunction(fgetc(fp), fgetc(fp), fgetc(fp)); 
} 

void newFunction(int i, int j, int k) 
{ 
    printf("%d %d %d", i, j, k,); 
} 

我期待a b c但爲什麼我的代碼給c b a

+4

它沒有定義參數評估的順序。 –

+0

@Someprogrammerdude你的意思是優先?我會嘗試用括號括起來。 – reiallenramos

+2

*運算符*優先級與它無關。只是可以按任何順序評估參數。你不會知道哪個'fgetc'調用會被首先調用。請閱讀[此評估訂單參考](http://en.cppreference.com/w/c/language/eval_order)以獲取更多信息。 –

回答

0
void newFunction(int i, int j, int k); 

int main() 
{ 
    FILE *fp; 
    /...opens text file.../ 
    int i = fgetc(fp); 
    int j = fgetc(fp); 
    int k = fgetc(fp); 
    newFunction(i,j,k); 
} 

void newFunction(int i, int j, int k) 
{ 
    printf("%d %d %d", i, j, k); 
} 

您可以在上面做以避免模糊性,以便評估參數。

+1

是的。它還有助於保持任何必須調試,維護或增強代碼的人的理智。 – ThingyWotsit