回复 楼主 Dream_weaver
我的帖子还是我自己来回复吧,我自己想明白了。
程序是这样的
while((status = scanf("%d",&code)) != 1 || (code < 1 || code > 5))
{循环}
首先要说的是scanf("%d",&code)的返回值是【输入数据与格式字符串匹配的次数】,也就是说这里一定是要输入整型数据才匹配
开始
①当输入为非整型数据时,scanf返回0,status=0,status!=1, 不用管后面的代码了,直接执行循环。
②当输入为整型数据时,例如code=6,scanf返回1,stutas=1,不满足(status = scanf("%d",&code)) != 1 ,
于是要继续判断第一"||"后面的语句(code < 1 || code > 5),显然code=6是不在1~5之间,满足,执行循环。
③当输入为整型数据时,例如code=1,scanf返回1,stutas=1,不满足(status = scanf("%d",&code)) != 1 ,
于是要继续判断第一"||"后面的语句(code < 1 || code > 5),显然code=1在1~5之间,不满足,跳出循环。
此外:对于scanf还要详细说一点,即使它可以匹配多次,返回值可以是0,1,2····
例如scanf("%d %d",&a,&b),输入两个整型数据,则scanf("%d %d",&a,&b) == 2.