有人可以解釋或指向我解釋了爲什麼在第一印刷行下面的代碼片段包括整個單詞hello
的參考,而在第二個它是由只有字母he
?我認爲退格轉義字符會刪除最後三個字母,而不考慮換行符。我已閱讀關於printf
的GNU文檔,但無法找到任何關於點的信息。的處理B在模板字符串的printf用C
int main(void)
{
printf("hello\b\b\b\n");
return 0;
}
int main(void)
{
printf("hello\b\b\b");
return 0;
}
優秀的例子。一個快速的後續問題:爲什麼'#define DELAY(2)'語句中的大括號? – BruceM
@BruceM在這個例子中,這太過矯枉過正,但它是爲了避免某些情況下宏不像你期望的那樣擴展。類似於多行宏通常包含在'do {...} while(0)'語句中。如果你看看PC-Lint,MISRA標準等,你會發現這種編碼風格的更多信息。 – DevNull