事实上,如果说要自增或自减一个值而没有指定多少,那么一般可以将其理解为自增或自减 1,C++ 提供了一对运算符执行此操作,它们都是一元运算符,这意味着它们只在一个操作数上运行。
自增运算符(++)可以将其操作数的值增加 1,自减运算符(-)可以将其操作数的值减 1。例如,在表达式 num++ 中,单个操作数是变量 num,该表达式将其值增加 1。
以下是将变量 num 的值自增 1 的 3 种不同的方法:
num = num + 1;
num + = 1;
num ++; //此语句使用了自增运算符
以下是 3 种不同的自减 1 的方法:
num = num – 1;
num – = 1;
num –; //此语句使用了自减运算符
请注意,在自增运算符(++)的两个加号之间或运算符与变量名之间都没有空格,同样,自减运算符(–)的两个减号之间以及该运算符与变量名之间也不存在空格。另外还要注意的是,自增和自减运算符不能对常数执行运算。它们只能对一个左值(例如变量)执行操作。
以下是使用自增和自减运算符的合法和非法表达式示例:
count++; // 合法
count–; // 合法
5++; //非法
5–; //非法
下面的程序演示了自增和自减运算符的正确使用方法。它使用这些运算符来更改循环控制变量的值。
#include <iostream> using namespace std; int main() { int count = 1; while (count < 6) { cout << count << " "; count++; //The ++ operator increments count } cout << endl; int count =5; // Re-Initialize the loop control variable to 5 while (count> 0) { count << count << " "; count --; } cout << endl; return 0; }
程序输出结果:
1 2 3 4 5
5 4 3 2 1
后缀和前缀模式
以上所有示例中使用的自增和自减运算符都是采用后缀模式的,即运算符放在变量之后。其实这 2 个运算符也可以在前缀模式下工作,即运算符放在变量名之前。
这意味着,上面程序中第 10 行和第 17 行的语句也可以写作如下形式:
++count;
–count;
在前缀和后缀模式下,这些运算符同样是从它们的操作数中加 1 或减 1。那么它们之间有什么区别呢?
在像上面程序中这样的简单使用语句中,没有区别。但是,当这些运算符用于不仅仅是自增或自减变量的语句中时,其区别就很重要。例如,来看以下代码:
num =4;
cout << num ++;
这个 cout 语句要做两件事情:显示 num 的值,并给 num 的值自增 1。但是先做什么后做什么呢?num 先自增与 num 后自增,cout 显示的值是不一样的。答案取决于自增运算符的使用模式。
后缀模式会使在表达式中使用变量的值之后发生自增。在该示例中,cout 将显示 4,然后 num 将被自增到 5。但是,前缀模式将使自增先完成。在下面的语句中,mim 将首先自增到 5,然后 cout 将显示 5:
num = 4;
cout << ++ num;
下面程序通过将自增和自减运算符放在 cout 语句中进一步说明了这些动态变化,这样可以很容易地看出在使用前缀和后缀模式之间的区别。但是,一般不要这样做。也就是说,在实际的编程应用中,不建议在 cout 语句中放置自增或自减运算符。
#include <iostream> using namespace std; int main() { int num = 4; cout << num << " "; //输出 4 cout << num++ << " "; // 输出 4, 然后num+1 cout << num << " "; // 输出5 cout << ++num << "/n"; //先num+1,然后输出6 cout << num << " "; // 输出6 cout << num-- << " "; //输出 6,然后num-1 cout << num << " "; //输出5 cout << --num << "/n"; //先num-1,然后输出4 return 0; }
程序输出结果:
4 4 5 6
6 6 5 4
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/22053.html