2017-04-23 26 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