#include<stdio.h>
int main()
{
printf("He %c llo",65);
}
输出:他A
llo
#include<stdio.h>
int main()
{
printf("He %c llo",13);
}
输出:llo
。它不打印他。
我可以理解65是A的ascii值,因此在第一种情况下打印A
,但在第二种情况下打印为llo
。
由于
答案 0 :(得分:10)
ASCII 13是回车符,在某些系统上只是将光标移动到刚刚开始的行的开头。
其他字符则会删除之前的文字。
答案 1 :(得分:5)
Man ascii:
Oct Dec Hex Char
015 13 0D CR '\r'
字符13
是回车符,因此它会打印He
然后返回到行的开头并打印提醒llo
。
答案 2 :(得分:3)
由于回车的性质,它只是被渲染得很奇怪*。您可以通过管道传输到另一个工具(例如xxd
:
$ 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
*请参阅Wikipedia:
在无法显示图形的打印机,电视类型和计算机终端上,使用回车而不移动到下一行,以允许将字符放在现有字符的顶部以生成字符图形,下划线和交叉出文字。