标题:关于while loop的小问题
只看楼主
citystudy
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-10-2
结帖率:0
已结贴  问题点数:20 回复次数:7 
关于while loop的小问题
菜菜菜鸟学c语言,求各位大神指教,跪谢

#include <stdio.h>
void main(){
    int a,b,c=0;
    while(!c){
        printf("%d",!c);
        printf("%d",c);
        scanf("%d%d",&a,&b);
        printf("%d%d",a,b);
    }
}

结果大概是
1
0
x
x
xx
1
0
我想问,为什么这个while loop不会循环下去而是终止?
没有循环为什么会第二次出现1跟0?
搜索更多相关主题的帖子: 学c语言 include while 
2011-10-02 19:38
larryliu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:128
注 册:2011-9-30
得分:3 
貌似木有终止吧,只是一直要你输入,当你输错的时候就会发现死循环了~~
2011-10-02 20:15
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
得分:3 
非零的都是真,所以你的循环条件很容易退出

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2011-10-07 18:39
seeworld
Rank: 2
等 级:论坛游民
帖 子:19
专家分:39
注 册:2011-10-7
得分:3 
第一次循环:
printf("%d",!c);
printf("%d",c);
的结果是
1
0
scanf("%d%d",&a,&b);是读取两个数:
x
x
printf("%d%d",a,b);是输出刚才读取的两个数,结果是:
xx
接着循环,看条件(!c)为真,开始第二次循环:
同样的,printf("%d",!c);
printf("%d",c);的结果是
1
0
接着执行scanf("%d%d",&a,&b);,等待我们从键盘输入两个数。这就是楼主问的状态,如果继续输入两个数后,显示:
x
x
xx
1
0
再输入,再 显示,这样一直循环下去,因为c始终为0,则!c始终为真,while始终循环下去,是个是循环。
2011-10-07 18:55
exo1991
Rank: 2
等 级:论坛游民
帖 子:66
专家分:98
注 册:2011-8-30
得分:3 
个人认为楼主已经把a,b声明为整型变量了,而又赋以字符数据,因为数据不符,所以很容易退出循环的。
2011-10-08 09:38
ileelsai
Rank: 5Rank: 5
等 级:职业侠客
帖 子:87
专家分:303
注 册:2011-9-25
得分:3 
这貌似是个死循环吧,你确定能停下来!!!!估计只有在计算机无法理解你的输入的时候

[ 本帖最后由 ileelsai 于 2011-10-8 14:33 编辑 ]
2011-10-08 14:30
NeXT__00
Rank: 2
等 级:论坛游民
帖 子:51
专家分:98
注 册:2011-9-5
得分:3 
a,b 是int型,输入字符不合适,出现死循环。
2011-10-08 14:56
seeworld
Rank: 2
等 级:论坛游民
帖 子:19
专家分:39
注 册:2011-10-7
得分:0 
int 和char类型在很多地方是相通的,所以输入字符不合适是不用考虑的;
出现死循环的原因在于!c这个条件始终为真,并且循环体内没有break;这样的推出循环命令,
所以楼主可以在循环体内加个退出的语句,比如:
while(!c){
        printf("%d",!c);
        printf("%d",c);
        scanf("%d%d",&a,&b);
        printf("%d%d",a,b);
        if(a==0)
            break;
    }
当输入a的值为0时退出循环。
2011-10-08 17:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-351472-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.079245 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved