黑马程序员技术交流社区

标题: count输出多少?, [打印本页]

作者: rosv    时间: 2013-5-11 11:28
标题: count输出多少?,
int count = 0;
        for (int i = 10; i <= 10; i++)
        {
            count = count++;
        }
        System.out.println(count);
作者: liuelxiwd    时间: 2013-5-11 11:32
本帖最后由 liuelxiwd 于 2013-5-11 11:38 编辑

这个结果是0,而且这个0是循环体里面的count,不是定义时的0,自增在后面,对你的输出没什么影响
作者: long    时间: 2013-5-11 11:35
本帖最后由 long 于 2013-5-11 11:46 编辑

count输出0,因为循环体只执行一次,语句count = count++; 只执行一次,可将count++视为一条表达式,因为用的是后自增操作符,所以表达式的值为自增前的值,因为count被初始化为0,所以表达式的值0,然后count自增一次变为1,最后将表达式的值0赋给count,因此count最终的值是0.
作者: 李瑞    时间: 2013-5-11 11:45
输出结果为1,定义i=10 判断i<=10满足,循环一次,count加1,第二次i=11不满足,跳出循环输出count=1
作者: 王靖远    时间: 2013-5-11 11:51
输出结果是0. i=10判断1<=10成立,进入循环体,count=count++是count先赋值再自增,然后执行i++,再判断i=11<=10不成立,循环结束,打印结果为0。
作者: 黑马-雷钊    时间: 2013-5-11 15:03
输出0啊。。这个结果也许不是你要的。输出0的主要原因是: count = count++;这句代码。因为count本来就是0,但因为++在count后面。所以会先执行这count = count,然后count再++;你要想输出1就要把++写在前面count = ++count;这样就先算 ++count再赋值。懂了吗

作者: 江大海    时间: 2013-5-11 15:30
黑马-雷钊 发表于 2013-5-11 15:03
输出0啊。。这个结果也许不是你要的。输出0的主要原因是: count = count++;这句代码。因为count本来就是0 ...

结果是1吧,因为你count++了,就是说加1了之后才会跳出循环,而且老师好像说过,因为不是算式,所以++count和count++的结果其实是一样的
作者: 黑马-雷钊    时间: 2013-5-11 15:33
朋友,遇到这种问题要进行写代码编译的哦  。。我帮你编译运行过了

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

QQ截图20130511153312.png

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

QQ截图20130511153300.png

作者: 黑马-雷钊    时间: 2013-5-11 15:33
你看看   有没有错?

作者: chouwayメ    时间: 2013-5-11 16:04
1、count++  先给等式中的“右边的”count赋值;  
2、接着自己count完成自增动作变成为1;
3、 再然后由“=”进行等式赋值变成count=0;

-----Miss小强楼主 已帮我鉴定了应该就是这样子的。
作者: Miss小强    时间: 2013-5-11 17:15
江大海 发表于 2013-5-11 15:30
结果是1吧,因为你count++了,就是说加1了之后才会跳出循环,而且老师好像说过,因为不是算式,所以++cou ...

不一样噢,不过在C语言中是一样的。。。
作者: Miss小强    时间: 2013-5-11 17:17
你可以这样理解:
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);
作者: Miss小强    时间: 2013-5-11 17:18
如果还有问题请继续追问,否则请将帖子改为已解决。。。
我也当回斑竹。。。哈哈。。。老曹得劈我了。。。
作者: rosv    时间: 2013-5-11 18:53
都是高手啊。。
作者: HM汪磊    时间: 2013-5-11 18:56
黑马-雷钊 发表于 2013-5-11 15:03
输出0啊。。这个结果也许不是你要的。输出0的主要原因是: count = count++;这句代码。因为count本来就是0 ...

先执行count=count,count值为0,在执行count++后count值为1,那怎么count最后又成0了呢?
作者: 黑马-雷钊    时间: 2013-5-11 19:00
嘿嘿,这个还不简单。。先执行count=count。然后执行count++。但是它还会再次赋吗??这个程序不管循环多少次结果都是零。因为count始终处于0的状态。count = count++。赋完一次值后自增是没有意义的。除非是count = ++count。这样的话就先自增再赋值。
作者: 黑马-雷钊    时间: 2013-5-11 19:01
不过主要还是因为一个count只会赋一次值。而不是先赋一次0值,再自增,再赋值。最后输出1.
作者: 曹睿翔    时间: 2013-5-12 09:50
及时更改问题状态,点编辑改为已解决




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2