计算机发明最早是为了辅助计算。那么我们今天开始学最基本的运算符。
之前已经说到,计算机程序语言的发明就是源自生活高于生活,所以运算符也类似于我们生活中的运算符。
数学中的+-×÷对照于+-*/。那么我们来进行一下简单计算。也复习一下之前的知识。
运算符也有先后顺序,等同于我们数学中的先乘除再加减。但是编程中的运算也有简便的写法,例如i++,++i,i*=2,这样的特殊形式。实际上i++和++i就等同于i=i+1;但是要注意运算符顺序。i=i++和i=++i就不一样,
#includeiostreamusingnamespacestd;intmain(){inti; inta=3; i=a++; couti的值为:iendl; couta的值为:aendl; return0;}
我们调整一下顺序:
#includeiostreamusingnamespacestd;intmain(){inti;inta=3;i=a;couti的值为:iendl;couta的值为:aendl;return0;}
i=a++,先把a赋值给i,然后a=a+1。
i=++a,先把a=a+1,然后i=a。
但是要注意一种特殊情况:自己赋值给自己的情况。i=i++的情况,并不是i=i,然后i=i+1两步,而是只有一步i=i。
#includeiostreamusingnamespacestd;intmain(){inti=3;i=i++;couti的值为:iendl;return0;}
而i=++i,才等同于i=i+1。
好了,就是这么简单,以上++这种方式又叫做累加器。
对于i*=2的情况,实际上是i=i*2,为什么能写成这种形式呢?因为运算符的操作结构是栈结构,在编译过程中将运算符按照一定顺序压入栈再进行操作。后期我们讲到高级数据结构的时候再详细讲解。这里大家只要记住这样的顺序即可。
我们来试一下这样的练习吧,心算一遍,看看与你思考的一样吗?
#includeiostreamusingnamespacestd;intmain(){inti=0; i=i+1; couti的值为:iendl; i=i*8; couti的值为:iendl; i=i-2; couti的值为:iendl; i=i/3; couti的值为:iendl; i++; couti的值为:iendl; i=i++; couti的值为:iendl; i=++i; couti的值为:iendl; i+=2; couti的值为:iendl; i*=2; couti的值为:iendl; return0;}
赶快运算来看看效果吧