自增(++)和自减(--)的解析
2015-10-14 16:37
239 查看
今天看书遇到了自增自减的问题,想了半天上网搜了半天才想明白,说白了就是,前置型递增(++a)是先自增一再运算,而后置型递增(a++)是先计算再自增一,自减同理。
实例说明(我用的是js):
1.首先,你要明确一点,当变量自加或自减后,无论他是在 = 的左或者右边,他都已经改变了。
<script type="text/javascript">
var num1 = 29;
var num2 = --num1;
alert(num1 +","+ num2); //结果:28,28
</script>
2.其次,是在简单运算中的顺序。
<script type="text/javascript">
var num1 = 2;
var num2 = 20;
var num3 = --num1 + num2;
var num4 = num1 + num2;
alert(num3 +","+ num4); //结果:21,21
</script>
如上,前置自减(--num1)是先自减1,再运算,sum3 = 1 + 20 = 21。
<script type="text/javascript">
var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2;
var num4 = num1 + num2;
alert(num3 +","+ num4); //结果:22,21
</script>
如上,后置自减(num1--)是先[b]运算
[b]sum3 = 2 + 20 = 22[/b],再自减1。[/b]
3.最后,是难一点的运算。
<script type="text/javascript">
var i = 0;
var j = i++ + i++;
alert(i +","+ j); //结果:2,1
</script>
前置型递增(++a)是先自增一再运算,而后置型递增(a++)是先计算再自增一,自减同理。就是这么简单,弄清原理,怎么变都不怕。
实例说明(我用的是js):
1.首先,你要明确一点,当变量自加或自减后,无论他是在 = 的左或者右边,他都已经改变了。
<script type="text/javascript">
var num1 = 29;
var num2 = --num1;
alert(num1 +","+ num2); //结果:28,28
</script>
2.其次,是在简单运算中的顺序。
<script type="text/javascript">
var num1 = 2;
var num2 = 20;
var num3 = --num1 + num2;
var num4 = num1 + num2;
alert(num3 +","+ num4); //结果:21,21
</script>
如上,前置自减(--num1)是先自减1,再运算,sum3 = 1 + 20 = 21。
<script type="text/javascript">
var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2;
var num4 = num1 + num2;
alert(num3 +","+ num4); //结果:22,21
</script>
如上,后置自减(num1--)是先[b]运算
[b]sum3 = 2 + 20 = 22[/b],再自减1。[/b]
3.最后,是难一点的运算。
<script type="text/javascript">
var i = 0;
var j = i++ + i++;
alert(i +","+ j); //结果:2,1
</script>
<script type="text/javascript"> var i = 0; var j = ++i + ++i; alert(i +","+ j); //结果:2,3 </script>
<script type="text/javascript"> var j = 0; var k = 0; for( i=0; i<10; i++){ k = j++; } alert(i +","+ j +","+ k); //结果:10,10,9 </script>
前置型递增(++a)是先自增一再运算,而后置型递增(a++)是先计算再自增一,自减同理。就是这么简单,弄清原理,怎么变都不怕。
相关文章推荐
- eclipse 响应慢 或 未响应
- DAO中方法实现
- C++ vector
- Windows下编译VLC2.2.1 ---CygWin环境
- Android使用http协议与服务器通信
- 使用HttpClient接口实现网络通信
- ExtJs Grid自动生成列
- 如何解决listview/gridview的position=0时,getview被多次调用
- 使用canvas与Paint在View中居中绘制文字
- C++Primer第五版 第11章 关联容器(练习解答)
- git的使用(转)
- ios APP审核加速上架服务
- 调用windows讲述人播放语音
- 如何更新Android SDK
- Android开源项目xUtils HttpUtils模块分析
- 最棒的Twisted入门教程
- 关于如何选择sphinx4和pocketsphinx和一些其他问题
- make和gdb的简单应用
- 如何修改Tomcat服务器Server Locations .
- Android Studio生成Jni头文件的方法