| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 15350 人关注过本帖
标题:求助:一段代码看不懂
只看楼主 加入收藏
ustcsse
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-9-26
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:7 
求助:一段代码看不懂
第一段:
程序代码:
#include <iostream>
using namespace std;
int main()
{
    int a,x;
    for(a = 0,x=0;a<=1 &&!x++;a++)
    {
        a++;
    }
    cout << a << x << endl;
    return 0;
}
第二段
程序代码:
#include <iostream>
using namespace std;
int main()
{
    int a,x;
    for(a = 0,x=0;a<=1 &&!x++;)
    {
        a++;
    }
    cout << a << x << endl;
    return 0;
}
第一段:初始化定义a=0,x=0;a小于等于1,x的非为1;符合循环条件,x++后x增为1,进入循环体a++,a自增为1,然后再执行循环体的a++,a就变成2了。然后a = 2;x = 1;
第二段:初始化定义a=0,x=0;a小于等于1,x的非为1;符合循环条件,x++后x增为1,然后执行循环体里面的a++,a就变成了1,接下来书里说a=1满足执行条件,所以&&后面的!x++被执行,!x=0,所以不执行循环体,但是x++依然执行,自增为2.我主要是第二段代码中关于x++部分的第二次循环不理解。请高手指教!这是程序猿面试宝典上面的题目,觉得自己看书看的好不认真,,
2014-01-23 20:19
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:5 
有什么不理解的嘛,!x++ 就是 !(x++)
不管!x值如何,x都会++

a && b 中 a表达式的值 绝对是否执行 b,但无论如何a本身是会被执行的
for( ; a; ) b 中 a表达式的值 绝对是否执行 b,但无论如何a本身是会被执行的
2014-01-24 09:12
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
话说这个贴的人气如何这么高。。。

楼主理解了么?


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2014-01-24 21:52
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:5 
回复 楼主 ustcsse
#include <iostream>
using namespace std;         
int main()
{
    int a,x;
    for(a = 0,x=0;a<=1 &&!x++;a++)/
    {
        a++;
    }
    cout << a << x << endl;
    return 0;
}
//a,x 先赋值为0,条件满足,执行a++,然后a变成了1,然后再执行一次a++,所以a变成了2
#include <iostream>
using namespace std;
int main()
{
    int a,x;
    for(a = 0,x=0;a<=1 &&!x++;)
    {
        a++;
    }
    cout << a << x << endl;
    return 0;
}
//a,x在这个for循环中初始为0,!x++(x在这个语句中先执行运算,再自增)for循环中的条件第一次满足,并且x自增为1,然后a自增为1,然后又进入条件判断语句,
因为a满足小于等于1的条件,!x++(x先执行运算,再自增),第二次运算条件没满足,但是X仍旧加1变为2.
我是这么理解的,上机测试结果也是对的。
意见供楼主参考,楼主可以多亲自动手测试,好处很多哦。。

想抽苏烟了。
2014-01-25 04:53
ustcsse
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-9-26
收藏
得分:0 
回复 4楼 fl8962
我上级测试了一下,只是刚开始不知道不执行循环还执行x++,就是这一点有不懂,新手,谢谢你对我的指导!
2014-01-25 18:23
ustcsse
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-9-26
收藏
得分:0 
回复 3楼 蚕头燕尾
理解了,可能因为我名字开头四个字。。
2014-01-25 18:23
ustcsse
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-9-26
收藏
得分:0 
回复 2楼 rjsp
理解了 谢谢你对我的帮助
2014-01-25 18:23
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:0 
回复 5楼 ustcsse
打了那么多字的面子上,兄弟你就给我分吧。。。

想抽苏烟了。
2014-01-26 17:29
快速回复:求助:一段代码看不懂
数据加载中...
 
   



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

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