鱼C论坛

 找回密码
 立即注册
查看: 1265|回复: 4

S1E15的课后作业

[复制链接]
发表于 2021-11-24 22:10:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第3题的题目怎么理解呀?为什么输入2这些自然数可以继续执行程序?如果输入2的话,逻辑与前面那个表达式判断值不是应该是0(假)的么?(2 == 1是错的)如果假的话,根据短路求值不是直接就跳出循环了么?
s1e15.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-24 22:18:28 | 显示全部楼层
本帖最后由 jackz007 于 2021-11-24 23:00 编辑
while(scanf("%d" , & ch) == 1 && ch >=0) ;
         这个循环条件由两部分构成,scanf("%d" , & ch) == 1 和 ch >= 0 这两个条件必须同时成立,只要其中任何一个不成立都会导致循环结束。
         scanf("%d" , & ch) 只要正常读入一个整数都会返回 1,反之,如果输入非数字及 Ctrl-Z、F6 等 scanf() 的返回值就会不等于 1;而输入一个负数会导致 ch >= 0 的条件不成立,所以,总结起来,输入一个负数或输入一个字符(串)或者输入 F6、Ctrl-Z 都可以让程序退出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-11-25 12:39:21 | 显示全部楼层
jackz007 发表于 2021-11-24 22:18
这个循环条件由两部分构成,scanf("%d" , & ch) == 1 和 ch >= 0 这两个条件必须同时成立,只要 ...

前面那个不是先scanf(“%d”,&ch)先得到一个值(假设为A),然后再判断A == 1的真假么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-25 13:17:17 | 显示全部楼层
本帖最后由 jackz007 于 2021-11-25 13:20 编辑
小超超超 发表于 2021-11-25 12:39
前面那个不是先scanf(“%d”,&ch)先得到一个值(假设为A),然后再判断A == 1的真假么?


       执行 scanf(“%d”,&ch) 这条语句,ch 得到键盘输入的数值,而 scanf(“%d”,&ch)本身也会是一个数值(函数返回值),如果读到了一个整型数,这个值就是 1。否则,就会是其它数值,例如,当键入的是 Ctrl-Z 或 F6 时,这个数值就是 -1。关于这一点,你自己完全可以写代码进行验证。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-25 19:09:03 | 显示全部楼层
jackz007 发表于 2021-11-25 13:17
执行 scanf(“%d”,&ch) 这条语句,ch 得到键盘输入的数值,而 scanf(“%d”,&ch)本身也会 ...

我写了试过了,就是有点没想明白,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-18 15:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表