天天看點

基礎知識 | 每日一面(78)

基礎知識 | 每日一面(78)

古代的劍客們與

對手相逢時,無

論對手多麼強大,

明知不敵,也要亮出自己的劍!

讀者:我的程式的螢幕提示和中間輸出有時顯示在螢幕上, 尤其是當我用管道向另一個程式輸出的時候。

小林:在輸出需要顯示的時候最好使用明确的 fflush(stdout) 調用, 尤其是當顯示的文本沒有 \n 結束符時。有幾種機制會努力幫助你在 “适當的時機” 執行 fflush, 但這僅限于 stdout 為互動終端的時候。

讀者:我如何在 printf 的格式串中輸出一個 ’%’?我試過 \%, 但是不

行。

小林:隻需要重複百分号: %%。\%不行, 因為反斜杠 \ 是編譯器的轉義字元, 而這裡我們的問題最終是 printf的轉義字元。

讀者:有人告訴我在 printf 中使用 %lf 不正确。那麼, 如果 scanf() 需要%lf, 怎麼可以用在 printf() 中用 %f 輸出雙精度數呢?

小林:printf 的 %f 辨別符的确既可以輸出浮點數又可以輸出雙精度數。根據 “預設參數擴充” 規則, 不論範圍内有沒有原形都會在在類似 printf 的可變長度參數清單中采用, 浮點型的變量或擴充為雙精度型, 是以 printf() 隻會看到雙精度數。printf() 的确接受 %Lf, 用于輸出長雙精度數。

有時候,正是那些意想不到之人,成就了無人能成之事。

——圖靈

基礎知識 | 每日一面(78)