当前位置:编程学习 > JAVA >>

java运算符优先级问题

int i=5;
int n=i+(i++)+(++i);

运行结果 n=?+?+? --------------------编程问答-------------------- n=5+5+6 --------------------编程问答-------------------- 应该是16吧,楼上正解
--------------------编程问答-------------------- n= 5 + 5 + 7; --------------------编程问答--------------------
引用 1 楼 diypyh 的回复:
n=5+5+6
 错了兄弟
--------------------编程问答--------------------
引用 3 楼 GJ20107924 的回复:
n= 5 + 5 + 7;
 兄弟你是怎么 计算的呢   --------------------编程问答--------------------
引用 3 楼 GJ20107924 的回复:
n= 5 + 5 + 7;
 这个是对的 --------------------编程问答-------------------- 第一个i没变,第二个i也是用后再自动加一,加的时候为5,加完变6,第三个i因为前面+1,然后自己是先加再用,变为7,所以是5+5+7 --------------------编程问答-------------------- 你用的什么编译器???
环境不一样,计算的方式不一样。
n= 5 + 5 + 7; --------------------编程问答-------------------- 你用的什么编译器???
环境不一样,计算的方式不一样。
n= 5 + 5 + 7;
n=5+5+6
这两个都是对的。 --------------------编程问答--------------------
引用 7 楼 GJ20107924 的回复:
第一个i没变,第二个i也是用后再自动加一,加的时候为5,加完变6,第三个i因为前面+1,然后自己是先加再用,变为7,所以是5+5+7
同意楼上的! --------------------编程问答-------------------- int i = 5;
int i1 = 0;
int i2 = 0;
i1 = i++; //等同于i1=i;i=i+1;
i2 = i++; //等同于i2=i+1;i=i+1; --------------------编程问答--------------------
引用 7 楼 GJ20107924 的回复:
第一个i没变,第二个i也是用后再自动加一,加的时候为5,加完变6,第三个i因为前面+1,然后自己是先加再用,变为7,所以是5+5+7

正解+1 --------------------编程问答-------------------- 运行结果是n=5+5+7;因为  i++和++i是有区别的,i++是先赋值再进行运算,++i是先运算再赋值
int i=5;        
 int n=i+(i++)+(++i); 
我是这么理解的:
i++ 中的i是5,但运算过后是6,i++是先赋值再进行运算
++i 前面i运算过后是6,先加1,那么i就7
所以是 5+5+7
若int n=i+(++i)+(i++) 就是5+6+6
如果你把 i,i++,++i的位置换一下肯定会得不同的结果
  --------------------编程问答-------------------- 这种坑爹的东西很无聊 --------------------编程问答-------------------- 要是有人在真实项目中这样写,
会忍不住给他两耳光 --------------------编程问答-------------------- 我觉得是n=5+5+7
i++是先运算后加1,++i是先加1后运算
所以n=i+(i++)+(++i)是n=5+5+7
--------------------编程问答-------------------- 应该是 5+5+7
开始i=5;
根据+的结合顺序
所以 第一个i=5;
     第二个i++;使i=6;
     则 第三个 ++i;i=7;计算时也为7 --------------------编程问答-------------------- 运算符自增问题:
http://blog.csdn.net/zhaoming262350/article/details/8220361

  i=5,进行i++运算时,先赋值后运算,所以 i+(i++) =5+5,而当执行完i++后,i=6,等到执行++i时,要先进行运算后进行赋值,所以加在5+5后面的值是7 就是5+5+7      
public class TestS
{
public static void main(String [] args)
{
int i=5;
int n=i+(i++)+(++i);  
              
System.out.println(n);
}
} --------------------编程问答-------------------- 5+5+7,第一个i是不变的,第二个i++的意思是,先操作再加1,第三个则是先加1再操作,
n =  i + (i++) + (++i)可以写为:

n = i + i;
i = i +1;
i = i +1;
n = n + i; --------------------编程问答--------------------
引用 9 楼 lh412552703 的回复:
你用的什么编译器???
环境不一样,计算的方式不一样。
n= 5 + 5 + 7;
n=5+5+6
这两个都是对的。


恩恩,这个才是正解嘛 --------------------编程问答-------------------- 一开始也觉得是5+5+6
看了各位的说法之后才觉得应该是5+5+7. --------------------编程问答--------------------
引用


引用 7 楼 GJ20107924 的回复:
第一个i没变,第二个i也是用后再自动加一,加的时候为5,加完变6,第三个i因为前面+1,然后自己是先加再用,变为7,所以是5+5+7

+1 --------------------编程问答-------------------- 正确5+5+7 --------------------编程问答-------------------- 应该是5+5+7 --------------------编程问答-------------------- int i=5;
        int n=i+(i++)+(++i);
这个应该是先算括号里的和自加
也不是说先算(++i)和(i++) 即先算++i和i++ 这两个里面一个是先赋值后运算,一个是先运算后赋值
所以运算里的i++可以先不考虑其运算过程,当i来使用即可
这时n=i+(i++)+(++i)就成了n=i+i+i,而因为++i是先赋值后运算,导致这里的i成了i=i+1然后才参与运算
即n=i+i+i这里的i是先执行了i=i+1后的,所以n应该是18
--------------------编程问答-------------------- 正解 5+5+7
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,