for ( i = 0; i < lim -1 &&(c = getchar()) != '\n' && c != EOF; ++i )
s[i] = c;
练习2-2 在不使用运算符&&或|| 的条件下编写一个与上面的for循环语句等价的循环语句
#include<stdio.h>
#define lim 10
#define EOF 46
int main()
{
enum loop { NO, YES };
enum loop okloop = YES;
int i = 0, c;
while(okloop = YES)
{
if(i < lim - 1)
okloop = NO;
else if((c = getchar() != '\n'))
okloop = NO;
else if( c != EOF)
okloop = NO;
else
i++;
}
return 0;
}
在不使用&&和||的情况下,我们只能将for循环分解为一系列if语句。在这个过程中,定义一个okloop枚举变量,初始为YES,当满足任何一个条件的时候,将okloop设置为NO,此时,循环结束。