首页 > 编程 > C++ > 正文

C++自增与自减(++|--)讲解

2020-05-23 14:28:16
字体:
来源:转载
供稿:网友
我们发现,在for语句中,会经常用到i=i+1之类的语句。于是为了方便表示,C++中有了增量表达式和减量表达式。增量的操作符为++,减量的操作符为--。增减量运算的优先级和逻辑非运算处在同一级。所以我们现在可以记作“不曾(增)算关羽活”,但是要注意,逻辑非和增减量操作符应该依次从左向右计算,而没有谁优先的说法(因为它们同级)。

在实际使用中,我们会遇到两种增(减)量操作。一种是++i,称为前增量操作,另一种是i++,称为后增量操作。那么这两种操作有什么不同呢?应该如何记忆呢?

我们刚才说了,增量和减量是表达式,既然是表达式就应该有一个结果。而前增量和后增量的结果是不同的。++i是先去做i=i+1,然后再把i作为表达式的结果;而i++是先把i作为表达式的结果,然后再去做i=i+1。说到这里,可能有些读者要糊涂了,要是i=1,执行完了i++和++i的结果不都是i=2么?怎么叫结果不一样呢?那么我们来看段程序:(程序5.1.2)
#include "iostream.h" 
int main()
{
   int a,i=1;
   a=i++;
   int b,j=1;
   b=++j;
   cout <<a <<' ' <<b <<' ' <<i <<' ' <<j <<endl;
   return 0;
}
运行结果:
1 2 2 2

我们发现,当i和j同时为1分别执行前后自增以后,i和j的值都由1变成了2。但是a和b的值却是不同的。不同的原因就是在于前面讲的赋值与做加法的顺序不同。a=i++是先把没有做过加法的i值赋给了a,所以a的值为1;而b=++i是先做加法,即i=2了以后,再把i的值赋给b,所以此时b的值为2。我们记忆的时候可以按照增量操作符和变量的位置来记,加号在变量前面的称为“先加后赋”,即先做加法在赋值;加号在变量后面的称为“先赋后加”,即先赋值后做加法。由于增减量操作符有赋值操作,所以操作的对象(又称操作数,Operand)必须是左值。比如3++就是不允许的。

试试看:
1、修改程序5.1.1,使之输出以下结果:
①1+2+3……+50 ②1*2*3……*20 ③1/1+1/2+1/3……1/50

2、分别使用增量操作和减量操作修改程序5.1.1,使其运行结果不变。并考察使用前增量和使用后增量是否影响循环程序的运行结果。  
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表