为了账号安全,请及时绑定邮箱和手机立即绑定

输出为什么是0

输出为什么是0

Alleri 2016-03-16 20:47:40
public static void main(String[] args){    int i=0;    for(j=0;j<100;j++){        i=i++;    }    System.out.println(i);}
查看完整描述

12 回答

已采纳
?
九天悬日

TA贡献2条经验 获得超4个赞

i++是先赋值,后自增,每次循环都是把0赋值给i了

查看完整回答
4 反对 回复 2016-03-16
  • 干枯的海绵
    干枯的海绵
    瞎说,i的初始化i=0,根本不在循环体内,怎么会每次循环都给i初始化为0?
?
干枯的海绵

TA贡献8条经验 获得超3个赞

1.首先你的 J变量没有申明,此串代码一定会报错的,循环体根本不会运行,怎么会有输出0?

2.哪有i=i++这样的写法? i=i+1是有的 ; 直接i++也是可以的,i+=i也可以,程序怎么会认识你自创的的i=i++?

试下这个吧:

 for( int j=0;j<100;j++){

        i=i+1;/i++;

查看完整回答
3 反对 回复 2016-03-17
?
喵小咪2016

TA贡献2条经验 获得超2个赞

执行了一下也比较疑惑,上网翻了一下,原理如下:

i=i++;

第一步:先把i也就是0的值放在了一个临时变量区

第二步:i自增1,此时i变成了1

第三步:把临时变量区的值也就是0返回给i,所以此时i又变成了0

然后不管循环多少次都会执行这个步骤,所以你最后输出的值是0

查看完整回答
2 反对 回复 2016-03-17
?
念念念念

TA贡献3条经验 获得超5个赞

i++是先用后增,所以进入循环后i是0,你又把这个值(0)赋值给了i,所以怎么循环都还是最初的值(0),建议改成 i++;

查看完整回答
1 反对 回复 2016-03-17
?
rookie2maven

TA贡献278条经验 获得超76个赞

赞同楼上


查看完整回答
反对 回复 2016-03-19
?
fulllion

TA贡献1条经验 获得超0个赞

这不就是自找麻烦吗?

查看完整回答
反对 回复 2016-03-18
?
Halo_

TA贡献23条经验 获得超10个赞

i++之后,i是变成了1,但是i++还是0,你把它又赋给i,那i不就一直是0了。

查看完整回答
反对 回复 2016-03-17
?
陌熙

TA贡献18条经验 获得超24个赞

i++是先用后加,++i是先加后用,

循环100此 i=i++ ; 每次循环的是这样的 i = 0++; 先用后加 ;结果是i=0;.... 第100次: i=0++; print(i) == 0;

哈哈

查看完整回答
1 反对 回复 2016-03-17
  • fulllion
    fulllion
    0++中0不是变量,会报错的
  • 陌熙
    陌熙
    我也是醉了,我是给你演算,这是演算的过程。服了你。
?
谷陵_

TA贡献3条经验 获得超1个赞

把【i=i++;】改成i++;就可以了。

查看完整回答
反对 回复 2016-03-17
?
wl温良

TA贡献18条经验 获得超10个赞

谁给你的 破代码    怎么可能会有 i=i++的语句      你可以改成i++或者i+=1都可以实现你的 目的 

查看完整回答
反对 回复 2016-03-17
?
相忘于江湖494

TA贡献19条经验 获得超10个赞

++i是先赋值

查看完整回答
反对 回复 2016-03-17
  • 干枯的海绵
    干枯的海绵
    i++ 是先使用再自增,++i是先自增在使用,记忆方法看那个在前,+在前就先自增,变量在前就先用
  • 12 回答
  • 0 关注
  • 2404 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信