c - 在 C 中打印 boolean 结果

标签 c boolean operator-precedence

我读过


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

将根据下一个字符是否为 EOF 打印值 0 或 1。因为 != 的优先级高于 =。

但是当我在 gcc 中运行这个程序时,我得到一个看起来像
的字符 |0 0|
|0 1|

当我按下 enter 时作为输出。

最佳答案

putchar 打印一个字符。通过打印值 0 和 1,您正在打印 nullstart of heading (SOH)字符,都是控制字符。您需要将数字 0 和 1 转换为可打印的内容,方法是直接从 0 或 1 计算可打印的值:

while (...) {
    // note: the C standard (§ 5.2.1-3 of C99) ensures '0'+1 is '1', which is printable
    putchar(c+'0');
}

或使用 c 来决定打印什么。

while (...) {
    if (c) {
        ...
    } else {
        ...
    }
    // or:
    //putchar(c ? ... : ...);
    // though feelings on the ternary operator vary.
}

关于c - 在 C 中打印 boolean 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5168168/

相关文章:

c - 如何解决编译以下代码时出现的堆栈粉碎错误?

gcc - 在 GCC 风格的扩展内联汇编中,是否可以输出 "virtualized" boolean 值,例如携带标志?

java - 将整数转换为 boolean 值选择位数

c - 输出是什么并解释如何?

c - 有没有办法 malloc 一个数组大小为 10 的整数指针并返回它的值?

c - 为什么不允许在全局(文件)范围内初始化结构体成员,但可以在函数内部进行初始化?

java - SQL - 如果 boolean 值为 True,则返回行

c++ - C/C++ 三元运算符实际上与赋值运算符具有相同的优先级吗?

function - Haskell 运算符与函数优先级

c - 我如何知道用户给出的数字是整数还是 double ?