c - 我使用函数 "putchar()"来打印测试结果,但我得到的却是一个问号

标签 c putchar

就像标题所暗示的那样,我尝试使用 putchar() 来打印不等于测试 != 的结果,但我得到的输出是问号。

代码如下:

#include <stdio.h>
main()
{

    int c;
    c = getchar() != EOF;
    putchar(c);
}

我已经使用了 printf() 并且它有效:

#include <stdio.h>
main()
{

    printf("%d",getchar()!=EOF);
}

我的问题是:为什么它不适用于 putchar

最佳答案

首先,接受比较 getchar()!=EOF 将产生一个 bool 值,该值将被转换为 1(表示 true)或 0 (false) 当解释为任何整数类型时,语句:

printf("%d",getchar()!=EOF);

将此转换的值打印为格式化整数 - 因此您将看到打印的是“1”或“0”。

然而,声明:

putchar(c);

输出由 c 的值表示的实际字符(通常但不一定是 ASCII 值)。 01 表示的字符不是“可打印”字符,因此您的控制台将显示一些指示 - 在您的情况下,是一个问号。

关于c - 我使用函数 "putchar()"来打印测试结果,但我得到的却是一个问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58462597/

相关文章:

c - 使用 fscanf 计算单词出现的次数

c - 在 while 循环中合并 fgetc 和 putchar

c - 指向二维数组的指针

c - Microduino ENC28J60 以太网模块 Arduino 兼容,UDP 发送不工作

c - 使用 C 查询自定义 DNS 服务器

c - 是否有可能在其自身前面有效地重新分配数据?

c - 用 C 实现的有序前向无锁列表

c - 为什么 putchar() 打印出带有 "%"符号的字符?

c - Putchar 字符出现在我的 printf 函数的前面

c - 为什么在使用 getchar 输入时 putchar 不返回新行?