为什么`printf(“%c”,5)`打印竖线?

时间:2018-07-06 11:44:07

标签: c

这是代码

#include <stdio.h>

int main()
{
    printf ("\t%d\n",printf("MILAN"));
    printf ("\t%c",printf("MILAN"));
}

这是输出

$gcc -o main *.c
$main
  

米兰5

     

米兰|

现在的问题是

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

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

2 个答案:

答案 0 :(得分:11)

您的问题实际上归结为printf("%c", 5);的行为。

实际输出是平台使用的字符 encoding 的函数。如果是ASCII(非常常见),则它将输出控制字符 ENQ。输出的实际结果取决于命令外壳,竖线也不是不合理的选择。

答案 1 :(得分:3)

printf returns the number of characters printed。如您所见,在这种情况下,该数字为5。您正在执行的第二张打印尝试将int键入到char中,因为C是C,因此C可以让您执行此操作。在计算机上,它显示为|。我看到它呈现为空白字符。如@Bathsheba所说,整数5对应于ASCII中的控制字符,其呈现方式与系统有关。

Here's an ascii table, if you're curious about other numbers