连续打印“i++,--i,i++”出现的结果
来源:互联网 发布:vps安装python 编辑:程序博客网 时间:2024/05/17 19:22
首先,来一段这样的程序:
按照C语言学过的后置加加,前置减减的知识来说大多数人的思路是这样:
后置加加,先进行取值,然后自加1。所以i++打印的值为0。 后 i 值目前为1。
前置减减,先自减后取值,所以- -i打印出来的值为0。后 i 值为0;
后置减减,先取值后自减,所以i++打印出来的值为0。后i 值为1。
但是实际的结果值为:
意不意外,惊不惊喜?在看到答案之余,是不是怀疑自己学错了?其实思考的是对的,只是编译器(我的是VS2013版的)给你开了一个玩笑。当时我也愣了,还以为自己的坏了,哈哈。后来进入到汇编指令之后,就明白了。接下来,一起进入反汇编指令之旅。
push是出栈指令,首先找到它出战的元素,找到它的出处。然后开始解读反汇编指令了。
顺序是黑蓝红,三色的最终指向就是最后的打印结果。至于i- -打印出1 的原因就是说,因为打印的是i的值,在整个过程中i通过寄存器进行了两次++,一次- -。所以最终的打印结果是1。旅程结束了,这就告诉我们,多敲敲代码,哈哈。
阅读全文
0 0
- 连续打印“i++,--i,i++”出现的结果
- i++与++i的结果分析
- Int(i)的结果不正确
- printf中连续输出i++,--i,++i,i--的值如何
- i++ ,++i,i=i++的问题
- i++ ,++i,i=i++的问题
- i++;++i;i--;--i 的区别
- ++i,i++,--i和i--的区分
- i++ 、++i 、i-- 、--i 的效率问题
- I
- I
- ++i
- I
- I
- i
- ++i
- i++
- (++i) + (++i) + (++i) + (++i)
- 压缩感知重构算法之迭代硬阈值(Iterative Hard Thresholding,IHT)
- 结构体(2)
- 写给人类的机器学习 翻译完成
- Unity3D学习入门笔记(四)
- Dubbo框架之基础
- 连续打印“i++,--i,i++”出现的结果
- 数字三角形
- jdbc日期处理
- Flume中的HDFS Sink配置参数说明
- 16
- 10.23爆零了竟然还能写题解??
- linux安装chrome
- java中的回调机制
- python中if __name__ == '__main__'用途说明