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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a670987122 中级黑马   /  2016-3-10 18:42  /  2155 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

执行下面代码,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语言运行结果不一致,求解!

16 个回复

倒序浏览
楼主:个人见解哈,我也是新手,如有不对,请多包涵哈;
   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语言,由于我是小白,完全不懂哈...只能帮楼主这里啦哈.
回复 使用道具 举报
GavinChow 发表于 2016-3-11 08:38
楼主:个人见解哈,我也是新手,如有不对,请多包涵哈;
   public static void main(String[] args) {
      in ...

不是应该是7吗? i也有自增呀
回复 使用道具 举报
弱弱的问J的值呢
回复 使用道具 举报
新手上路 发表于 2016-3-11 08:46
不是应该是7吗? i也有自增呀

按照楼主的代码,i的值始终是3
回复 使用道具 举报

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

j是为了控制循环,可以不输出,来自: iPhone客户端
回复 使用道具 举报
Banana_uSuOO 来自手机 中级黑马 2016-3-13 19:52:19
13#
a670987122 发表于 前天 22:28
一般自己变成不会这么写,但是题目这么出,没法理解啊...

题目这么出的?顿觉测试不明觉厉来自: iPhone客户端
回复 使用道具 举报
卤煮,运行结果是一致的哦,我已经用c和java都试过了~至于为什么是3,请参照楼上的
回复 使用道具 举报
本帖最后由 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:02
16#
好好学习,天天向上
回复 使用道具 举报
感觉好坑
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马