请教i=i++? int i=0;i=i++;System.out.print("i="+i);为什么得到的结果是i=0;?求解释 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int i=0;i=++i;System.out.print("i="+i);楼主试试这个应该就懂了运算符优先级问题++i 先加再赋值i++ 先赋值再加 i=0;i=i++;输出等同于i=0;i=i;i++;输出i; http://www.ticmy.com/?p=43 int i=0;i=i++;System.out.println(i)//0因为后++是先赋值i,然后再进行++操作;int i=0;i=++i;System.out.println(i)//1因为前++是先赋值i,然后再进行赋值操作;前—— 、后——同理;望采纳!! i=i++;解释为:i=i;i++;============================================================================================i=++i;解释为:i++;i=i; i= i++;这个本来就是不需要的,应该使用i++;这样就避免了 = 和++ 谁优先的问题。也可以使用 i += 1;又如: i = i*2;应该表示为 i *= 2; 直接i++就好了,不用写成i=i++了 其实为什么出现这样的结果,我也觉得奇怪,所以百度了一下,你可以去看看。http://wenku.baidu.com/view/77341e60f5335a8102d22024.html int i=0;i=i++;System.out.print("i="+i);首先你把 i++作为一个整体的表达式看待 i++=0 因为后加加在对i赋值后才++ , 所以输出的i是=0你可以试下后加加int i=0;i=++i;这个就是先对i进行++操作,是i变成1,然后对i赋值,所以输出时 i=1 可以这样去理解的,你可以将 i = i++; 拆分成两个语句i = i++; <=> i = i; i+1;这你就明白为什么i输出的会是0了 在java有两种自增,一个是++i;还有个是i++。区别就是前一个是先加再计算,后一个是先计算后加 i=0;i=i;i上面说了是0,所以这里还是0;i++;这里是增1,不过没赋值,打印的是上面的i public class Test { public static void main(String[] args) { int i = 0; i = i++;//这样输出的是赋值后的i i++;//如果是这样写的话,输出的是1 System.out.println(i); }} int i=0; i=i++; System.out.print("i="+i);我也觉得结果有点奇怪,大家看下eclipse c++ 结果 1eclipse jee 结果 1vc++ 结果 1linux gcc 结果 1linux java 结果 0 能解释下不?http://www.ticmy.com/?p=43和这网址里的讲法是一个意思,只是用图来表示,你可以对照起来看 能解释下不?当你把i=i++改成i=++1的时候 就有了欲期的结果。这证明 i++和处理++i的不用处一个是运行前先加,一个一运行后加怎么实现运行后加的效果呢?1. 把i复制一份 i1 则 i=i1=02.然后把i+1 i=1 , i1=03.其它地方运算时用i1来 i=i14.所以 i最后还是0 Java中static final语句能优化掉不? JAVA抓包 2个数组比较 java中接口是否可以成为其他类的属性 大家帮忙看看这个执行期异常怎么改 日期转换问题! java application 应用程序 e.printStackTrace()打印到哪里了 再回首!!! 在jbuilder里面,怎样生成一个文件,然后存档? 怎样设计单选菜单? 求助:两个 List交替取数据 JAVA可移植性广泛应用
i=++i;
System.out.print("i="+i);楼主试试这个应该就懂了
运算符优先级问题
++i 先加再赋值
i++ 先赋值再加
i=i++;
输出
等同于
i=0;
i=i;
i++;
输出i;
i=i++;
System.out.println(i)//0
因为后++是先赋值i,然后再进行++操作;
int i=0;
i=++i;
System.out.println(i)//1
因为前++是先赋值i,然后再进行赋值操作;
前—— 、后——同理;
望采纳!!
解释为:
i=i;
i++;
============================================================================================
i=++i;
解释为:
i++;
i=i;
这个本来就是不需要的,应该使用
i++;
这样就避免了 = 和++ 谁优先的问题。
也可以使用
i += 1;
又如: i = i*2;
应该表示为 i *= 2;
http://wenku.baidu.com/view/77341e60f5335a8102d22024.html
i=i++;
System.out.print("i="+i);首先你把 i++作为一个整体的表达式看待 i++=0
因为后加加在对i赋值后才++ , 所以输出的i是=0你可以试下后加加
int i=0;
i=++i;
这个就是先对i进行++操作,是i变成1,然后对i赋值,
所以输出时 i=1
i = i++; <=> i = i; i+1;
这你就明白为什么i输出的会是0了
i=i;i上面说了是0,所以这里还是0;
i++;这里是增1,不过没赋值,打印的是上面的i
public class Test { public static void main(String[] args) {
int i = 0;
i = i++;//这样输出的是赋值后的i
i++;//如果是这样写的话,输出的是1
System.out.println(i);
}}
i=i++;
System.out.print("i="+i);
我也觉得结果有点奇怪,大家看下
eclipse c++ 结果 1
eclipse jee 结果 1
vc++ 结果 1
linux gcc 结果 1
linux java 结果 0
一个是运行前先加,一个一运行后加
怎么实现运行后加的效果呢?
1. 把i复制一份 i1 则 i=i1=0
2.然后把i+1 i=1 , i1=0
3.其它地方运算时用i1来 i=i1
4.所以 i最后还是0