今天我看到printf()
函數的匿名行爲。 任何人都可以告訴我爲什麼它的行爲如此。 是否printf()
中的函數執行順序相反? 請解釋或共享有用的鏈接。Printf在c中的匿名行爲
我的代碼
#include <stdio.h>
int fun(){
static int c=15;c++;
return c;
}
int main()
{
printf("%d %d %d",fun(),fun(),fun());
}
實際輸出:18 17 16 預期輸出:16 17 18
編輯2: 我還有一點我注意到,它的行爲只能用不功能,但也與變量
#include <stdio.h>
static int c=15;
int fun(){
c++;
return c;
}
int main()
{
printf(" %d %d %d %d %d",c,fun(),fun(),fun(),c);
}
實際輸出:18 18 17 16 15 預計產量:15 16 17 18 18
感謝提前:)
你在*未定義的行爲*的土地。注意惡魔。 –
在調用printf的過程中,唯一可以確定的是所有參數都在控制傳遞給printf之前進行了評估,它們的評估順序由編譯器決定。 –
未定義的行爲永遠不會令我驚歎 – asimes