练习1-6:第17页K&R-getchar问题

问题描述

当我运行下面的程序时,输出给出第二个1。我调试了程序,但是我不明白为什么编译器随时都写第二个1?

output like this.

const

解决方法

while语句中的条件

while (c = getchar() != EOF)

等同于

while (c = ( getchar() != EOF) )

由于运算符的优先级。如果输入未中断,则此逻辑表达式getchar() != EOF总是产生1

您需要写

while ( ( c = getchar() ) != EOF)
,

您按下的 Enter 键将终端的输入“发送”到程序,并作为换行符'\n'添加到输入缓冲区中,将在第二次迭代中读取循环。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...