C程序设计语言(K&R 第二版):练习1-6

题目:验证表达式getchar() != EOF的取值是0还是1

自我解答:

#include <stdio.h>

int main()
{
   int c;
   c = getchar() != EOF;
   printf("the value of 'getchar() != EOF' is %d\n", c);
   return 0;
}

当有输入时运行结果为:

the value of 'getchar() != EOF' is 1

当没有输入时运行结果为:

the value of 'getchar() != EOF' is 0

注意!=的优先级高于=,所以 c = getchar() != EOF;相当于  c = (getchar() != EOF),所以c表示的是布尔表达式getchar() != EOF的值,其只能有0或1两个值。所以如果用putchar替代printf的话,其输出的是0或1代表的字符。

参考答案:

#include <stdio.h>

int main()
{
    int c;
   
    while(c = getchar() != EOF)
        printf("%d\n", c);
    printf("%d - at EOF\n", c);
    return 0;
}

根据教材第11页的论述,表达式

c = getchar() != EOF 相当于   c = (getchar() != EOF) 本程序从系统的标准输入读取字符并使用了上面的表达式。当有字符可读时,getchar()不会返回文件结束符EOF,所以getchar() != EOF 的取值为真,变量c将被赋值为1.当程序遇到文件结束符时,表达式取值为假,此时,变量c将被赋值为0,程序将结束运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值