CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

关于i++的一个小问题!

楼主quiton(蛛蛛)2005-04-01 21:37:37 在 Java / J2SE / 基础类 提问

public   class   Testi  
  {  
          public   static   void   main(String   []   args)  
          {  
                    int   i=0;  
                    i=i++;  
                    System.out.println(i);  
          }  
  }  
   
  为什么输出结果是0而不是1呢?一直搞不明白! 问题点数:10、回复次数:7Top

1 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-04-01 21:44:12 得分 5

http://community.csdn.net/Expert/topic/3885/3885309.xml?temp=.9122278Top

2 楼csxiabin(里予亦虫)回复于 2005-04-01 21:44:50 得分 1

i++是先确定i的值再对i进行操作,后增量则相反,换成++i就是1了。这是我的理解,我也是才学。Top

3 楼dick66(狒狒)回复于 2005-04-02 10:51:00 得分 1

C++   的命名   本身就是个错误!!     应该叫++C!!Top

4 楼xiangqianchong(向前冲)回复于 2005-04-02 10:55:36 得分 1

前序递增/前序递减   :先进行运算,后指派其值  
  后续递增/后续递减   :先指派其值,后进行运算  
   
    i=i++;   先将   0   指派给   i,所以为0  
   
                    int   i=0;  
                    int   b=0;  
                    b=i++;  
                    System.out.println(b);  
                    System.out.println(i);  
   
  结果:  
  0  
  1  
  Top

5 楼tanzheng617(追梦人)回复于 2005-04-02 10:57:31 得分 1

在java中运算符的运算规则你可以参考一些书籍!  
        i++与++i是有很大的区别的!  
        i=++i;   java是先对i进行+1运算,然后再把值赋给i  
        i=i++;   java是先把i的值赋给了i,然后再进行i+1运算,所以你那样   i   肯定还是   0   了!Top

6 楼pzysoft(风尘雨路)回复于 2005-04-02 13:11:48 得分 1

楼上正解Top

7 楼Banned(bannedlqd@gmail.com)回复于 2005-04-02 15:20:42 得分 0

参考第二版的Java语言规范第14,15章有如下结论:  
   
  程序的运行基本上是语句执行的过程。  
   
  有一种语句叫表达式语句,表达式语句通过评估  
  表达式的值得以执行。  
   
  有一种表达式叫简单赋值表达式。  
  其结构如下:  
   
  left-hand   =   righ-hand  
   
  简单赋值表达式的评估步骤如下:  
  1   对left-hand评估以确定一个变量。  
  2   对right-hand评估以得到一个值。  
  3   将步骤2得到的值保存进步骤1所确定的变量中。  
   
  简单赋值表达式的值即是   赋值以后,left-hand所确定的变量的值。  
   
  有一种表达式叫后增表达式。  
  其结构为:  
  operand   ++  
   
  后增表达式的评估步骤如下:  
  1   对operand评估以确定一个变量。  
  2   对步骤1中的变量进行增1操作。  
   
  后增表达式的值是   没有增1操作前operand所确定的变量的值。  
   
  回过来分析(i的初始值为0)    
  i=i++  
   
  i=i++   是简单赋值表达式,所以其评估过程是  
   
  1   确定变量i  
  2   评估i++  
      2.1   确定变量i  
      2.2   i增1,这时i的值为1  
  3   i++表达式的值是0,于是i的值被赋为0  
   
  如上分析,最后i的值为0。  
   
  Top

相关问题

  • 小小小小小问题!
  • 一个小小小小小小问题
  • 小小,小问题
  • 小小小小问题
  • 小小问题!
  • 小小问题?
  • 小小问题。
  • 小小问题!!!!
  • 小小API
  • 小小问题:)

关键词

  • 语句
  • 表达式
  • 变量
  • 评估
  • 运算
  • 值
  • 简单赋值
  • 确定
  • 步骤
  • 指派

得分解答快速导航

  • 帖主:quiton
  • jFresH_MaN
  • csxiabin
  • dick66
  • xiangqianchong
  • tanzheng617
  • pzysoft

相关链接

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

广告也精彩

反馈

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