黑马程序员技术交流社区

标题: Java运算符++运行的疑惑 [打印本页]

作者: a670987122    时间: 2016-3-10 18:42
标题: Java运算符++运行的疑惑
执行下面代码,i的输出结果是( )
   public static void main(String[] args) {
      int i = 3;
      for(int j = 0; j < 5;j++){
         i = i++;
      }
      System.out.println(i);
}

Java测试结果和C语言运行结果不一致,求解!
作者: GavinChow    时间: 2016-3-11 08:38
楼主:个人见解哈,我也是新手,如有不对,请多包涵哈;
   public static void main(String[] args) {
      int i = 3;
      for(int j = 0; j < 5;j++){
         i = i++;                        // i ++,先赋值,后自增,初始化语句:int i = 3,[i = i++]这个运算表达式,相当于把[3]继续赋值给[i],所以在循环的时候i的值始终为3
      }
      System.out.println(i);
}
当楼主将"i = i++"更改为"i++",或者更改为"i = ++i",这样i的值才会变为8.
这里考了两个知识点:1:"="为赋值; 2:"i++",先赋值,后自增.
至于C语言,由于我是小白,完全不懂哈...只能帮楼主这里啦哈.

作者: 新手上路    时间: 2016-3-11 08:46
GavinChow 发表于 2016-3-11 08:38
楼主:个人见解哈,我也是新手,如有不对,请多包涵哈;
   public static void main(String[] args) {
      in ...

不是应该是7吗? i也有自增呀
作者: yepeng0311    时间: 2016-3-11 09:53
弱弱的问J的值呢
作者: GavinChow    时间: 2016-3-11 10:58
新手上路 发表于 2016-3-11 08:46
不是应该是7吗? i也有自增呀

按照楼主的代码,i的值始终是3
作者: GavinChow    时间: 2016-3-11 11:10
yepeng0311 发表于 2016-3-11 09:53
弱弱的问J的值呢

个人理解:J的值为5,但是无法打印
作者: AlphaCC    时间: 2016-3-11 12:14
这个好像涉及到编译器和虚拟机,原理去网上查,我也不懂;
我觉得只要有编程基础的,一般不会写出 i=i++ 这样的语句
作者: yunfeng482    时间: 2016-3-11 12:28
直接i++不就完了吗,代码不规范。你没理解i++的含义 用后加1
作者: a670987122    时间: 2016-3-11 22:28
一般自己变成不会这么写,但是题目这么出,没法理解啊
作者: 新手上路    时间: 2016-3-12 10:41
http://soft.chinabyte.com/database/279/11431779.shtml   可以看看这个帖子
作者: a670987122    时间: 2016-3-13 19:06
多谢了!
作者: Banana_uSuOO    时间: 2016-3-13 19:50
yepeng0311 发表于 前天 09:53
弱弱的问J的值呢...

j是为了控制循环,可以不输出,
作者: Banana_uSuOO    时间: 2016-3-13 19:52
a670987122 发表于 前天 22:28
一般自己变成不会这么写,但是题目这么出,没法理解啊...

题目这么出的?顿觉测试不明觉厉
作者: lvlup200    时间: 2016-3-18 17:24
卤煮,运行结果是一致的哦,我已经用c和java都试过了~至于为什么是3,请参照楼上的
作者: yindalei00    时间: 2016-3-18 21:21
本帖最后由 yindalei00 于 2016-3-18 21:29 编辑

http://www.blogjava.net/dreamstone/archive/2006/11/04/79058.html  如果你看得懂的话  新手路过i=0;i=i++为什么等于0
作者: 0308lidong    时间: 2016-3-18 22:36
好好学习,天天向上
作者: hjh987099654    时间: 2016-3-20 12:40
感觉好坑




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