#include<stdio.h>
int main()
{
printf("He %c llo",65);
}
输出:他 A
你好
#include<stdio.h>
int main()
{
printf("He %c llo",13);
}
输出结果为:
llo
。它没有打印出 "He"。我可以理解,在第一个情况中,65 是 A 的 ASCII 值,因此打印了
A
,但是在第二个情况中为什么会打印 llo
。谢谢。
ASCII 13是回车符,在某些系统上,它只是将光标移动到您刚才所在的行的开头。
随后输入的字符会覆盖先前的文本。
Man ascii:
Oct Dec Hex Char
015 13 0D CR '\r'
字符13
是回车符,因此它打印出He
,然后返回到行的开头并打印剩余的llo
。
\n
,或者在OS X之前的MacOS中使用纯粹的\r
。 - Mikael Sxxd
)来查看实际字符:
$ gcc b.c && ./a.out | xxd 0000000: 4865 200d 206c 6c6f He . llo $ gcc c.c && ./a.out | xxd 0000000: 4865 2041 206c 6c6f He A llo在打印机、电传打字机和不能显示图形的计算机终端上,回车符被用于不换行地放置字符,以产生字符图形、下划线和删除线等效果。详见维基百科。
A
吗?还是应该是He A llo
? - Chris Lutz