写在前面:
我06年升入烟台大学,大一下学期开始接触C++,掐指算来接触C++也有三年有余。但是真正学习C++的时间几乎为零。我们当时学的是谭浩强的《c++程序设计》清华大学出版社。学完这本书后,开始长达一年的空白阶段。大三开始重温C++,期间读了《More Effective C++》《C++ STL》《More Effective STL》等书籍。
大二下学期开始学习MFC,一直到现在只学的皮毛。后来又接触了Qt设计。欲感C++的博大精深。也感到自己C++基础薄弱。故,重温C++。分享自己学习的心的。也希望大家能够指出其中的不足。
一个问题:
question:i++,++i,i+=1的区别?
先来看一下一位资深网友的回答:
“计算机内部实现过程有别,详细如下:
i=i+1的过程相当:
temp=i+1; i=temp;
i++的过程相当:
temp=i; i=temp+1; return temp;
++i的过程最简单:
i增1然后return i 的值,一步完成,没有给任何temp变量赋值”
现在为了测试这句话的正确性,我编辑一个最简单的代码来查看汇编测试:
int i=0;
i++;
++i;
i+=1;
汇编效果:
可以看出并没有什么区别。但是计算机组成原理中曾经提到:++i和i++单句用的时候,编译器就按照i += 1;处理了.
于是更改为复合语句来实现。代码如下:
结果汇编效果如下:
我们这样可以看到他们之间的区别。上面那位网友所言甚是。
写在最后:
以后的笔记我以《c++ primer中文版》为基石,加入自己的看法。希望大家能指出其中的不足,指正其中的错误。我们在追求技术巅峰的路上,共勉之。