文章时效性提示
本文发布于 471 天前,部分信息可能已经改变,请注意甄别。
《C程序设计语言》练习2-2
1 | for (i=0; i<lim-1 && (c=getchar()) != '\n' && c != EOF ; ++i) |
在不使用运算符&&或||的条件下编写一个与上面的for循环语句等价的循环语句。
先分析给出的原代码:
- 初始化
i = 0。 - 检查循环条件:
i < lim - 1:确保数组的索引不超出界限。(c = getchar()) != '\n':从输入中读取字符,判断是否是换行符。c != EOF:判断是否到达文件尾。
- 如果所有条件都为真,则执行循环体
s[i] = c,将字符c存入数组s[i]中。 - 每次循环结束后,执行
++i,然后重新检查所有条件。
特点:
- 条件检查非常紧凑,所有条件是“与”的关系(
&&)。 - 一旦任何一个条件不满足,循环立即终止。
- 如果
getchar()读到换行符或文件尾(EOF),整个循环停止,且不会再执行s[i] = c。
代码:
1 | for (i=0; i<lim-1; ++i) |
注意:在使用if判断c=getchar()) != '\n'和c != EOF时一定要加else来退出这个for循环,因为题目中循环使用&&的短路特性,当任一条件为假时就停止。
如果不加上break退出循环,虽然结果可能是一致的,但逻辑并不相等。