为什么`printf("%c",5)`打印垂直条?

Mil*_*hah 0 c

这是代码

#include <stdio.h>

int main()
{
    printf ("\t%d\n",printf("MILAN"));
    printf ("\t%c",printf("MILAN"));
}
Run Code Online (Sandbox Code Playgroud)

这是输出

$gcc -o main *.c
$main
Run Code Online (Sandbox Code Playgroud)

米兰5

米兰|

现在的问题是

为什么printf返回| 当我们打印字符时(格式化程序为%c)?

5和|之间的关系是什么?这里?

Bat*_*eba 11

你的问题实际上归结为printf("%c", 5);.

实际输出是平台使用的字符编码的函数.如果它是ASCII(非常常见),那么它将输出控制字符 ENQ.你实际获得的输出将取决于你的命令shell,垂直条不是一个不合理的选择.