S1E15的课后作业
第3题的题目怎么理解呀?为什么输入2这些自然数可以继续执行程序?如果输入2的话,逻辑与前面那个表达式判断值不是应该是0(假)的么?(2 == 1是错的)如果假的话,根据短路求值不是直接就跳出循环了么? 本帖最后由 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 都可以让程序退出。
jackz007 发表于 2021-11-24 22:18
这个循环条件由两部分构成,scanf("%d" , & ch) == 1 和 ch >= 0 这两个条件必须同时成立,只要 ...
前面那个不是先scanf(“%d”,&ch)先得到一个值(假设为A),然后再判断A == 1的真假么? 本帖最后由 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。关于这一点,你自己完全可以写代码进行验证。 jackz007 发表于 2021-11-25 13:17
执行 scanf(“%d”,&ch) 这条语句,ch 得到键盘输入的数值,而 scanf(“%d”,&ch)本身也会 ...
我写了试过了,就是有点没想明白,{:10_277:}
页:
[1]