我正在阅读 K&R C 书,示例程序之一是这样的:
#include <stdio.h>
int main() {
long nc;
nc = 0;
while (getchar() != EOF) {
++nc;
}
printf("%ld", nc);
return 0;
}
当我运行这个程序时,它的行为基本上符合我的预期。因此,对于像 这是一个句子
这样的输入,它会打印 19
。
但是,如果我输入 10 个字符以下(包括 EOF)的内容,则输出数字后会附加一个大写的 D
。
例如对于输入 hello
,输出为 6D
。
为什么整数值后面会附加一个 D
以及它的含义是什么?
注意:这种情况发生在 cc
、gcc
和 clang
中。
最佳答案
事实证明D
是 ^D
的一部分当我输入 EOF(Unix 上的 control
+ D
)时,它会打印到控制台。因为没有\n
在 printf
的开头语句,一位数将覆盖 ^
,而两位数将覆盖整个 ^D
,这就是给人留下一些奇怪行为印象的原因。
关于C、为什么printf在个位数长后添加 "D"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64067770/