3
以下程序顯示了緩衝I/O是如何導致程序出現問題的時候有點像錯誤「除以零」發生:是否將換行符添加到printf()等同於刷新流?
int main()
{
int a = 1, b = 0, c;
printf("Dividing...");
c = a/b;
printf("Answer is: %d\n", c);
return 0;
}
輸出爲Floating point exception (core dumped)
。
不夠公平。但令人驚訝的是,如果我將第一個printf更改爲printf("Dividing...\n");
,則在程序崩潰之前實際上會打印此文本(順便說一下,我在Linux上運行GCC)。
我可以得出結論:添加一個換行符相當於沖洗?如果是這樣,如果我的所有printf()
字符串都以\n
結尾,我實際上剝奪了自己對緩衝I/O的好處?
令人驚異的答案,我必須說,一個驚人的啓示! :d – dotslash