Topic: 俩个语句,i++;,与i=i++;有什么区别.

  Print this page

1.俩个语句,i++;,与i=i++;有什么区别. Copy to clipboard
Posted by: laies
Posted on: 2006-03-19 19:56


int i=0;
i=i++;
System.out.print(i+"");
输出:
0

改为:

int i=0;
i++;
System.out.print(i+"");
输出:
1

WHY?

declaration: 本人意思是把以上语句i=i++;改为i++;决不是写在一起的程序.

2.Re:俩个语句,i++;,与i=i++;有什么区别. [Re: laies] Copy to clipboard
Posted by: xatm092
Posted on: 2006-03-19 20:11

i++是先用 i 的初始值,再做 i=i+1,
第1个例子在赋值的时候用的是 i 的初始数值,即 0

3.Re:俩个语句,i++;,与i=i++;有什么区别. [Re: laies] Copy to clipboard
Posted by: why
Posted on: 2006-03-19 23:00

1. never write something like i=i++, NEVER, EVER
2. do a search on this forum with keyword i=i++

4.Re:俩个语句,i++;,与i=i++;有什么区别. [Re: laies] Copy to clipboard
Posted by: suntao19830709
Posted on: 2006-03-23 16:14

int i = 0;
i=i++;

这个效果如下:
int temp = i++;//this : temp = 0; i =1;
i = temp;//this: i =0;

因此: i=i++; 相当于什么都没有做,在有的IDE里,它会告诉你这个代码是废代码!

5.Re:俩个语句,i++;,与i=i++;有什么区别. [Re: laies] Copy to clipboard
Posted by: kof821117
Posted on: 2006-03-24 02:12

i的初值你都没有给

6.Re:俩个语句,i++;,与i=i++;有什么区别. [Re: laies] Copy to clipboard
Posted by: laies
Posted on: 2006-03-24 11:21

感谢WHY和其它3位的捧场

xatm092 的说法没太大说服力,你是按输出来的结果分析它。
我想知道解释器是怎么理解它的呢?

suntao19830709 兄的例子是自己想出来的吗?

WHY:我需要记住这个惯性呢,还是......

既然如此,i++与++i有着本质的不同,但输出的结果为何相同。

最近把权限控制符over了,Thinking看到了8章,暂且对合成,多太性有些模糊。大家能分别给我举个合成和多太性的例子吗?先表示感谢了。

7.Re:俩个语句,i++;,与i=i++;有什么区别. [Re: laies] Copy to clipboard
Posted by: suntao19830709
Posted on: 2006-03-24 13:34

如果这时候有个整数temp分别等于i++和++i,如下解释:
i++;意味着int temp = i; i = i +1;
++i;意味着i = i+1; int temp = i;
分别执行:
(1):
int i=0;
int a = i++;
(2):
int i=0;
int a= ++i;

你会发觉两次的a的值是不一样的,这就是区别。

另外我4楼的回答不是自己想的,是以前在其他论坛看到的,不好意思。。。。
不过IDE会告诉你那是费代码,我自己尝试过。

8.Re:俩个语句,i++;,与i=i++;有什么区别. [Re: laies] Copy to clipboard
Posted by: laies
Posted on: 2006-03-24 17:35

非常感谢suntao19830709 的精彩回答,我会把这个解释写到我的记事本作为参考。

9.Re:俩个语句,i++;,与i=i++;有什么区别. [Re: laies] Copy to clipboard
Posted by: iwillsucceed
Posted on: 2006-03-26 23:34

一个很简单的问题,竟然被讲的这么复杂?
还有人用英文给人家讲 哈哈 轻佻

10.Re:俩个语句,i++;,与i=i++;有什么区别. [Re: laies] Copy to clipboard
Posted by: 朱批
Posted on: 2006-03-29 18:01

其实i++与++i就是+1执行先后的问题
i++是先完成了对i的操作再+1
++i是先加了1再对i进行操作

请问在哪个IDE里会说是废代码呀?谢谢

11.Re:俩个语句,i++;,与i=i++;有什么区别. [Re: 朱批] Copy to clipboard
Posted by: why
Posted on: 2006-03-29 21:05

朱批 wrote:
其实i++与++i就是+1执行先后的问题
i++是先完成了对i的操作再+1
++i是先加了1再对i进行操作

请问在哪个IDE里会说是废代码呀?谢谢

現在討論的是i=i++,而非i++
這最少在Eclipse会说是废代码

12.Re:俩个语句,i++;,与i=i++;有什么区别. [Re: laies] Copy to clipboard
Posted by: caoguanghui
Posted on: 2006-03-31 20:19

WHY 不早就说到点子上了吗?i=i++;这样的代码,我真的是从来没有看到过。

13.Re:俩个语句,i++;,与i=i++;有什么区别. [Re: laies] Copy to clipboard
Posted by: liding_cj
Posted on: 2006-04-09 23:24

其实我觉得i=i++结果应该是i=1,但是结果不对我也没办法.
要知道i++与++i 的区别和c++里是一样的,但是C++的i=i++结果是1,我觉得应该是这样,java不是这样的结果,里面一定有原因!

14.Re:俩个语句,i++;,与i=i++;有什么区别. [Re: laies] Copy to clipboard
Posted by: tomcatexpert
Posted on: 2006-04-11 11:58

直接将i++ 和 ++i 打印出来就知道他们的区别了.

15.Re:俩个语句,i++;,与i=i++;有什么区别. [Re: laies] Copy to clipboard
Posted by: 先锋
Posted on: 2006-04-12 15:26

同意楼上的说法
凡事自己多动手先


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923