江湖车侠|C和指针:如何快速上手C语言( 五 )
&&是“逻辑与"操作符 。 要使整个表达式为真,&&操作符两边的表达式都必须为真 。 然而,如果左边的表达式为假,右边的表达式便不再进行求值,因为不管它是真是假,整个表达式总是假的 。 在这个例子中,如果num到达了它的最大值,循环就会终止,而表达式
便不再被求值 。
scanf函数每次调用时都从标准输入读取一个十进制整数 。 如果转换失败,不管是因为文件已经读完还是因为下一次输入的字符无法转换为整数,函数都会返回0,这样就会使整个循环终止 。 如果输入的字符可以合法地转换为整数,那么这个值就会转换为二进制数存储于数组元素columns[num]中 。 然后, scanf 函数返回1 。
接下来的一个&&操作符确保在scanf函数成功读取了一个数之后才对这个数进行是否赋值的测试 。 语句
使变量num的值增加1 , 它相当于下面这个表达式
以后我将解释为什么C语言提供了两种不同的方式来增加一个变量的值 。
这个测试检查程序所读取的整数是否为偶数个,这是程序规定的,因为这些数字要求成对出现 。 %操作符执行整数的除法,但它给出的结果是除法的余数而不是商 。 如果num不是一个偶数,它除以2之后的余数将不是0 。
puts函数是gets函数的输出版本,它把指定的字符串写到标准输出并在末尾添上一个换行符 。 程序接着调用exit函数,终止程序的运行, EXIT_FAILURE这个值被返回给操作系统,提示出现了错误 。
当scan函数对输入值进行转换时,它只读取需要读取的字符 。 这样,该输入行包含了最后一个值的剩余部分仍会留在那里,等待被读取 。 它可能只包含作为终止符的换行符,也可能包含其他字符 。 不论如何while循环将读取并丢弃这些剩余的字符,防止它们被解释为第1行数据 。
下面这个表达式
值得花点时间讨论 。 首先, getchar函数从标准输入读取一个字符并返回它的值 。 如果输入中不再存在任何字符,函数就会返回常量EOF(在stdio.h中定义),用于提示文件的结尾 。
从getchar函数返回的值被赋给变量ch ,然后把它与EOF进行比较 。 在赋值表达式两端加上括号用于确保赋值操作先于比较操作进行 。 如果ch等于EOF,整个表达式的值就为假,循环将终止 。 若非如此,再把ch与换行符进行比较,如果两者相等,循环也将终止 。 因此,只有当输入尚未到达文件尾并且输入的字符并非换行符时,表达式的值才是真的(循环将继续执行) 。 这样,这个循环就能剔除当前输入行最后的剩余字符 。
推荐阅读
- 定格|有的人演再多的喜剧,也掩盖不了江湖人物的锋芒
- 阿里巴巴|马云,江湖再见
- 滴滴出行|网约江湖:生态闭环的滴滴
- 琴歌解说|出怀旧服才是这个游戏的出路,热血江湖:别再弄手游了
- 天涯明月刀手游|三千万预约,天刀手游终测能否让玩家买单?阿暖带你云游江湖
- 鲜闻快讯|行走江湖的七个哲学思维,《我的前半生》唐晶安全友善并不幸福
- 江湖车侠|国产操作系统发布:售价99元,你愿意花费这个价格去尝试吗
- 江湖车侠|谁说小米等于性价比?千元5G实力派,OPPO和VIVO不差
- 艺统江湖|赵丽颖演过的十二部古装电视剧,你最喜欢她的哪个古装扮相?
- 北府财君|收益随即放大十倍,江湖上失传已久的炒股秘籍——仅靠这两招买入技巧
