CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

一个有趣的问题

楼主rainly1985(不在彷徨)2005-08-04 19:16:14 在 Java / J2SE / 基础类 提问

 
  public   class   Test   {  
  static int   i   =   0;  
  /**  
    *   Method   main  
    * int   i   =   0;  
    *  
    *   @param   args  
    *  
    */  
  public   static   void   main(String[]   args)   {  
  //int   i   =   0;  
  i   =   i++;  
  System.out.println(i);  
  i   =   i++;  
  i   =   i++;  
  System.out.println(i++);  
  //   TODO:   Add   your   code   here  
  }  
  }  
  i的输出为什么是0?????? 问题点数:20、回复次数:10Top

1 楼steedhorse(晨星)回复于 2005-08-04 19:43:14 得分 0

偶觉得i   =   i++;应该这么理解:  
  int   tmp   =   i;  
  i   =   i   +   1;  
  i   =   tmp;Top

2 楼interhanchi(on the Java Road)回复于 2005-08-04 19:43:54 得分 0

有什么奇怪的!  
   
  好好理解一下i++和++i的区别吧?  
   
  i++是先先生成值,再执行运算,而   ++i是恰好相反!Top

3 楼homesos(熊猫贩子)回复于 2005-08-04 19:47:43 得分 0

哇  
   
  用后缀++ 当然是这样的结果了Top

4 楼homesos(熊猫贩子)回复于 2005-08-04 19:48:55 得分 0

有没有重载过operator  
  前缀   与 后缀 都分不清?Top

5 楼homesos(熊猫贩子)回复于 2005-08-04 19:50:20 得分 10

int   operator   ++   ()//前置操作符  
  {  
  return   i+1;  
  }  
   
  int   operator   ++   (int   flag)//后置操作符  
  {  
  int   j   =   i;  
  i   +=   1;  
  return   j;  
  }  
  Top

6 楼interhanchi(on the Java Road)回复于 2005-08-04 19:57:15 得分 0

楼上的解释的好!  
  ^_^!Top

7 楼believefym(feng)回复于 2005-08-04 21:24:00 得分 0

楼主把i=i++改成i++或者++i就会看到不同的结果了Top

8 楼alexwan(牧林:才多身子弱)回复于 2005-08-04 21:43:26 得分 0

结果,就是不一样,呵呵!Top

9 楼yhyu0107(茕子)回复于 2005-08-04 22:44:00 得分 10

如同homesos的比较专业说法,呵呵,如果理解操作符重载就很容易了。  
  i++,做i=   i   +   1   动作,但整个expression的值(返回值)是自加前的变量值;  
  而++i做同样的动作,返回自加后的变量值;  
  对于赋值运算,其优先级低于自加运算,所以  
  i   =   i++;  
  也就是:  
  i   =   (i++);  
  即右边表达式中,i自加了,值成了1,但整个表达式会返回0,0再赋值给i,   这样i的值   又成了0;  
  如此下面的都同理。  
  Top

10 楼rainly1985(不在彷徨)回复于 2005-08-05 11:39:11 得分 0

to     interhanchi(路曼曼其修远兮,吾将上下而求索.)    
  你说的地球人都知道,不要自以为是Top

相关问题

  • 有趣的 c#
  • 很有趣
  • 有趣的问提
  • 有 趣 的 对 话
  • 有趣的問題...^_^
  • 有趣的问题!
  • 有趣的事情!
  • 有趣的问题!
  • 一个有趣的问题
  • 一个有趣的公式!!!!!!!!!!!!!!!!!!!

关键词

  • 操作符
  • 值
  • 运算
  • 返回
  • 结果
  • operator

得分解答快速导航

  • 帖主:rainly1985
  • homesos
  • yhyu0107

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo