易错点小消除--递增运算符
2015-10-14 11:53
337 查看
对于我们常见的递增运算符,如果不加以搞清楚,很容易会导致在默写细节的地方出错。特别是在边界条件的时候。比如说:
int x=4;
int y=5;
y=x++;
我们都很容易就会知道答案是4,但是下面的情况稍不留神就会导致结果的大不相同咯。
运行结果:
是不是感觉很不可思议啊,那么我们一起看一看代码的执行顺序吧。
首先对于第一个输出语句,我们都知道括号的优先级是高于逻辑运算的优先级的,所以程序先执行括号内的,按照从左至右的顺序依次执行,所以x=0,然后X自增为1,在自增为2,所以0-2=-2,这就是结果了;同样的按照这个方式我们也可以算出,第二个式子X先自增为1,然后减1,变为零,所以结果就是0;
虽然上面的结果看起来很奇怪,但是这就是真正的代码的执行原理。
下面再我们一起看一下X最后的取值到底是多少吧。这样才能真正的做到了然于胸:
第一个式子:
第二个式子:
是不是感觉自己的逻辑一下字清晰了不少啊,文笔较拙,共同进步。
int x=4;
int y=5;
y=x++;
我们都很容易就会知道答案是4,但是下面的情况稍不留神就会导致结果的大不相同咯。
int x = 0; System.out.println(((x++)-(++x))); System.out.println(((++x)-(x++)));
运行结果:
-2 0
是不是感觉很不可思议啊,那么我们一起看一看代码的执行顺序吧。
首先对于第一个输出语句,我们都知道括号的优先级是高于逻辑运算的优先级的,所以程序先执行括号内的,按照从左至右的顺序依次执行,所以x=0,然后X自增为1,在自增为2,所以0-2=-2,这就是结果了;同样的按照这个方式我们也可以算出,第二个式子X先自增为1,然后减1,变为零,所以结果就是0;
虽然上面的结果看起来很奇怪,但是这就是真正的代码的执行原理。
下面再我们一起看一下X最后的取值到底是多少吧。这样才能真正的做到了然于胸:
第一个式子:
int x = 0; System.out.println(((x++)-(++x))); System.out.println("x= "+x); //运行结果: /* -2 x= 2 */
第二个式子:
int x = 0; System.out.println(((++x)-(x++))); System.out.println("x= "+x); //运行结果: /* 0 x= 2 */
是不是感觉自己的逻辑一下字清晰了不少啊,文笔较拙,共同进步。
相关文章推荐
- 这些在安装Windows 10时常用到的(类似备忘录)
- iOS9适配
- 跳转控制器传值
- 浅谈JSONP 的工作原理
- ex.
- 第五章基元数据,引用类型和值类型(CLR学习)
- Winform appconfig修改后的更新问题
- 《编写有效用例》阅读笔记二
- 如何判断ios设备类型
- 如果字符串是科学:如123213e21,转化为字符串
- Nginx_cache缓存部署
- C++ vector 删除某一元素
- javaIO--通过SAX方式解析xml文件简例
- python-面向对象(股票对象举例)
- 从系统相册选择多张图片
- CString类常用方法----Left(),Mid(),Right(),Left()
- android.os.NetworkOnMainThreadException
- 32讲课后习题1
- ERROR ITMS-90086
- 最全行车记录仪方案+主控芯片介绍!