A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© rosv 中级黑马   /  2013-5-11 11:28  /  2825 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int count = 0;
        for (int i = 10; i <= 10; i++)
        {
            count = count++;
        }
        System.out.println(count);

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

17 个回复

倒序浏览
本帖最后由 liuelxiwd 于 2013-5-11 11:38 编辑

这个结果是0,而且这个0是循环体里面的count,不是定义时的0,自增在后面,对你的输出没什么影响

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 long 于 2013-5-11 11:46 编辑

count输出0,因为循环体只执行一次,语句count = count++; 只执行一次,可将count++视为一条表达式,因为用的是后自增操作符,所以表达式的值为自增前的值,因为count被初始化为0,所以表达式的值0,然后count自增一次变为1,最后将表达式的值0赋给count,因此count最终的值是0.

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
输出结果为1,定义i=10 判断i<=10满足,循环一次,count加1,第二次i=11不满足,跳出循环输出count=1
回复 使用道具 举报
输出结果是0. i=10判断1<=10成立,进入循环体,count=count++是count先赋值再自增,然后执行i++,再判断i=11<=10不成立,循环结束,打印结果为0。

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
输出0啊。。这个结果也许不是你要的。输出0的主要原因是: count = count++;这句代码。因为count本来就是0,但因为++在count后面。所以会先执行这count = count,然后count再++;你要想输出1就要把++写在前面count = ++count;这样就先算 ++count再赋值。懂了吗

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
黑马-雷钊 发表于 2013-5-11 15:03
输出0啊。。这个结果也许不是你要的。输出0的主要原因是: count = count++;这句代码。因为count本来就是0 ...

结果是1吧,因为你count++了,就是说加1了之后才会跳出循环,而且老师好像说过,因为不是算式,所以++count和count++的结果其实是一样的
回复 使用道具 举报
朋友,遇到这种问题要进行写代码编译的哦  。。我帮你编译运行过了

QQ截图20130511153312.png (27.68 KB, 下载次数: 0)

QQ截图20130511153312.png

QQ截图20130511153300.png (6.97 KB, 下载次数: 0)

QQ截图20130511153300.png
回复 使用道具 举报
你看看   有没有错?
回复 使用道具 举报
1、count++  先给等式中的“右边的”count赋值;  
2、接着自己count完成自增动作变成为1;
3、 再然后由“=”进行等式赋值变成count=0;

-----Miss小强楼主 已帮我鉴定了应该就是这样子的。

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1 第三步谁给谁赋值使count变为0的?????.

查看全部评分

回复 使用道具 举报
江大海 发表于 2013-5-11 15:30
结果是1吧,因为你count++了,就是说加1了之后才会跳出循环,而且老师好像说过,因为不是算式,所以++cou ...

不一样噢,不过在C语言中是一样的。。。
回复 使用道具 举报
你可以这样理解:
int count = 0;
        for (int i = 10; i <= 10; i++)
        {
                int temp=count++;//temp为0;
                System.out.println(count);//count为1;
                count=temp;//count又变成了0;
        }
        System.out.println(count);
回复 使用道具 举报
如果还有问题请继续追问,否则请将帖子改为已解决。。。
我也当回斑竹。。。哈哈。。。老曹得劈我了。。。
回复 使用道具 举报
rosv 中级黑马 2013-5-11 18:53:45
14#
都是高手啊。。
回复 使用道具 举报
黑马-雷钊 发表于 2013-5-11 15:03
输出0啊。。这个结果也许不是你要的。输出0的主要原因是: count = count++;这句代码。因为count本来就是0 ...

先执行count=count,count值为0,在执行count++后count值为1,那怎么count最后又成0了呢?
回复 使用道具 举报
嘿嘿,这个还不简单。。先执行count=count。然后执行count++。但是它还会再次赋吗??这个程序不管循环多少次结果都是零。因为count始终处于0的状态。count = count++。赋完一次值后自增是没有意义的。除非是count = ++count。这样的话就先自增再赋值。
回复 使用道具 举报
不过主要还是因为一个count只会赋一次值。而不是先赋一次0值,再自增,再赋值。最后输出1.
回复 使用道具 举报
及时更改问题状态,点编辑改为已解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马