![](/img/trans.png)
[英]printf performance: Better to use “%d” or “%c” for single digit numbers
[英]C, why does printf add a "D" after a single digit long?
我正在閱讀 K&R C 書,其中一個示例程序是:
#include <stdio.h>
int main() {
long nc;
nc = 0;
while (getchar() != EOF) {
++nc;
}
printf("%ld", nc);
return 0;
}
當我運行這個程序時,它的行為大多符合我的預期。 所以對於像This is a sentence
這樣的輸入,它打印19
。
但是,如果我輸入少於 10 個字符(包括 EOF)的任何內容,則會在輸出數字后附加一個大寫D
例如,對於輸入hello
,輸出是6D
。
為什么有一個D
附加到一個整數值,它是什么意思?
注意:這發生在cc
、 gcc
和clang
。
事實證明, D
是^D
一部分,當我輸入 EOF(在 Unix 上為control
+ D
)時,它會打印到控制台。 因為printf
語句的開頭沒有\\n
,一位數將覆蓋^
,而兩位數將覆蓋整個^D
,這給人的印象是一些奇怪的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.