x = x + (x++) + (++x) 计算顺序 x = x + (x++) + (++x) 计算顺序,运算符+号前后的算式得到的x的值会相互影响么java++ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 debug一下就可以看到了。把代码写成这样,然后打个断点,运行一行看一下X的值就可以看到了。x = x + (x++) + (++x); 它其实是这样的,例如 int x = 2 ; 那么 x = x + (x++) + (++x) 就等于 x = 2 + 2 + 4 ;因为先运算左括号里的再运算右括号的,而左括号的(x++)会先把x = 2用于运算,再将x+1变为3来存储x,此时x=3便参与右括号(++x)的计算,而这样是先++之后的到x=4再存储来运算。你要记得x++是用x来计算或者做其他的输出之类的然后才会++再存储用以下面的,而++x就刚好相反,其是先++给x加1之后存储再进行当前的计算,只要记得“后++用以后面,前++用以前面”就不会出错了 其实这取决编译器,真的,你在cl下编译的结果和gun gcc下的编译的结果是不一样的。如果这是java,那我只能说 IBM的JDK与SUN的JDK可能也不一样。 x = x + (x++) + (++x)结果过应该是3x+1吧。其实你不用管内部怎么计算的,只要知道x++是返回x++x是返回x+1就可以了。 错了应该是x+ x + (x+1)+1=3x+2 五楼正解,i++就是语句执行完毕以后补做一个i=i+1的赋值,++i就是在语句执行之前执行一个i=i+1语句。可参考链接http://zhidao.baidu.com/question/35522236.html 6楼正解,结果3x+2.x++和++x参与运算时分别为x和x+1,参与运算后x值都变为x+1 i++ 是执行运算后 i的值加1 ;++i是先执行加1在做运算 在类C语言的程序语言中,C/C++, java, javascript, C# 得到的结果都可能不同。楼主的这种写法增加了程序出现错误的风险,增加了维护成本和难度,有百害而无一利可能大学里的老师喜欢在考试的时候出这种题,但是这种写法除了拿来show一下之外,没有什么实际意义。 感觉上和编译器以及优化方式有关,以前试过i=i++;visual studio 2010和eclipse结果就不一样 x = x + (x++) + (++x) 在C中语义是未定义的,随着编译器的不同可以有不同的结果;在Java中有明确的定义。这是介绍语义与语法区别和计算顺序的一个好例子,实践中避免使用。 怎样判断输入的是0-100的整数? 带有包名的Java类的编译和运行 请问:在一个集合或数组中存储不同数据类型数据 JTable如何设置为半透明 请问jvm包含在jdk中吗? 是哪里非法? 请教关于getBytes()方法的使用 java读写图片文件 关于java 访问串口程序的一点问题。 如何转换反编译出的java源代码中的中文字?求助!!!!! socket的IO问题 多线程用同步了为什么出现的结果是无序的
把代码写成这样,然后打个断点,运行一行看一下X的值就可以看到了。
x = x
+ (x++)
+ (++x);
因为先运算左括号里的再运算右括号的,而左括号的(x++)会先把x = 2用于运算,再将x+1变为3来存储
x,此时x=3便参与右括号(++x)的计算,而这样是先++之后的到x=4再存储来运算。你要记得
x++是用x来计算或者做其他的输出之类的然后才会++再存储用以下面的,而++x就刚好相反,其
是先++给x加1之后存储再进行当前的计算,只要记得“后++用以后面,前++用以前面”就不会出错了
如果这是java,那我只能说 IBM的JDK与SUN的JDK可能也不一样。
结果过应该是
3x+1吧。
其实你不用管内部怎么计算的,只要知道
x++是返回x
++x是返回x+1就可以了。
应该是
x+ x + (x+1)+1=3x+2
可参考链接http://zhidao.baidu.com/question/35522236.html
x++和++x参与运算时分别为x和x+1,参与运算后x值都变为x+1
visual studio 2010和eclipse结果就不一样
在C中语义是未定义的,随着编译器的不同可以有不同的结果;
在Java中有明确的定义。这是介绍语义与语法区别和计算顺序的一个好例子,实践中避免使用。