| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2653 人关注过本帖
标题:C中for语句问题,感觉很难,求大神解决
只看楼主 加入收藏
North520
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2016-3-2
结帖率:30.77%
收藏
已结贴  问题点数:12 回复次数:13 
C中for语句问题,感觉很难,求大神解决
for语句中condition有俩个控制表达式,如果一个true,一个false,怎么办
例如#include <stdio.h>
main()
{
    int x;
    for(x=30;x>=10;x--)
        x=x/2;
    printf("%d",x);
            
}
与#include <stdio.h>
main()
{
    int x,y;
    for(x=30,y=0;x>=10,y<10;x--,y++)
        x=x/2,y=y+2;
    printf("%d %d",x,y);
            
}
运行出来的x值不一样,怎么回事,求大神解决
搜索更多相关主题的帖子: include 表达式 false 
2016-06-20 20:46
格格不入fl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:56
专家分:192
注 册:2016-3-23
收藏
得分:3 
逗号表达式会取后面的一个布尔值
这里一般都用逻辑运算
2016-06-20 21:26
tremere
Rank: 6Rank: 6
来 自:火星
等 级:侠之大者
帖 子:223
专家分:432
注 册:2013-3-11
收藏
得分:3 
你要先理解for循环的执行顺序, for(x=30,y=0;x>=10,y<10;x--,y++)
for(;;)循环用分号隔开分号隔开的都是逗号运算符
for循环是先执行x=30,y=0这一部分。
然后判断x>=10,y<10 如果条件满足,就去执行循环体,然后去做x--,y++
然后再判断x>=10,y<10 如果条件满足,就去执行循环体,然后去做x--,y++
……
以此类推。只要懂它的执行顺序,理解起来就容易了



极品菜鸟,来学习啦,啦啦啦啦啦啦啦。。。
2016-06-21 08:54
dfmlpx
Rank: 1
等 级:新手上路
帖 子:9
专家分:7
注 册:2016-5-30
收藏
得分:3 
#include <stdio.h>
main()
{
    int x,y;
    for(x=30,y=0;x>=10,y<10;x--,y++)//用vc++调试就知道了;x>=10,y<10;这两个条件必须同时满足 循环停止
        x=x/2,y=y+2;
    printf("%d %d",x,y);
            
}
2016-06-21 10:44
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:3 
回复 3楼 tremere
看他的意思是他明白for的执行顺序,只是不明白如何判断x>=10,y<10这两个表达式一真一假的时候,整个for的控制条件是真还是假。
其实这是一个逗号表达式,取右面的结果吧
2016-06-21 11:08
格格不入fl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:56
专家分:192
注 册:2016-3-23
收藏
得分:0 
回复 3楼 tremere
分号隔开的都是逗号运算符? 逻辑运算符,关系运算符,条件运算符都可以往那放的啊 大兄弟
2016-06-21 11:33
格格不入fl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:56
专家分:192
注 册:2016-3-23
收藏
得分:0 
回复 4楼 dfmlpx
我用过很多编译软件 都不知道逗号运算符可以代替或运算符
2016-06-21 11:40
呆呆养的企鹅
Rank: 1
等 级:新手上路
帖 子:2
专家分:7
注 册:2016-6-15
收藏
得分:3 
for循环中有三项
第一项是最初满足的条件
第二项是结束需满足的条件
第三项是每执行一次循环对本次循环初始值的操作。
第二项中要是有不止一种判断标准,则需要全部通过这个判断才可以继续接下来的循环过程。
#include <stdio.h>
main()
{
    int x;
    for(x=30;x>=10;x--)
        x=x/2;
    printf("%d",x);
            
}中x执行需要20次循环才会输出
#include <stdio.h>
main()
{
    int x,y;
    for(x=30,y=0;x>=10,y<10;x--,y++)
        x=x/2,y=y+2;
    printf("%d %d",x,y);
            
}中y执行10次即可输出,此时x==20,对于x来说虽然仍有循环余地,但是需要保证x,y均符合判断,所以只能循环十次就要输出
所以两种方法中x的值不同

c语言新手一只,劳烦指教,谢谢!
2016-06-21 13:05
格格不入fl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:56
专家分:192
注 册:2016-3-23
收藏
得分:0 
回复 8楼 呆呆养的企鹅
其他概念不说
我说第一个只循环了两次 第二个只循环了四次 你信不信

[此贴子已经被作者于2016-6-21 13:56编辑过]

2016-06-21 13:46
North520
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2016-3-2
收藏
得分:0 
回复 2楼 格格不入fl
懂了,谢谢了
2016-06-21 15:05
快速回复:C中for语句问题,感觉很难,求大神解决
数据加载中...
 
   



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

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