C++ 自增自减运算符
自增运算符 ++ 会把操作数加 1,自减运算符 -- 会把操作数减 1。因此:
x = x+1; 等同于 x++;
同样的:
x = x-1; 等同于 x--;
无论是自增运算符还是自减运算符,都可以放在操作数的前面(前缀)或后面(后缀)。例如:
x = x+1; 可以写成: ++x; // 前缀形式
或者:
x++; // 后缀形式
前缀形式与后缀形式之间有一点不同。如果使用前缀形式,则会在表达式计算之前完成自增或自减,如果使用后缀形式,则会在表达式计算之后完成自增或自减。
实例
请看下面的实例,理解二者之间的区别:
实例
#include <iostream>
using namespace std;
int main()
{
int a = 21;
int c ;
// a 的值在赋值之前不会自增
c = a++;
cout << "Line 1 - Value of a++ is :" << c << endl ;
// 表达式计算之后,a 的值增加 1
cout << "Line 2 - Value of a is :" << a << endl ;
// a 的值在赋值之前自增
c = ++a;
cout << "Line 3 - Value of ++a is :" << c << endl ;
return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
Line 1 - Value of a++ is :21 Line 2 - Value of a is :22 Line 3 - Value of ++a is :23
C++ 运算符
ganleiboy
gan***boy@sina.com
算术运算符 ++d 和 d++ 的区别:
++d 是先加,先对 d 的值加 1,再使用 d 的值执行该行命令。
d++ 是后加,先使用 d 的值执行该行命令,执行完后再对 d 的值加 1。
实例:
#include <iostream> using namespace std; int main() { int c; int d = 10; // 测试自增、自减 c = ++d; // ++d 是先对 d 的值加 1,再使用 d 的值执行该行命令 cout << "d 等于 " << d << endl; cout << "c 等于 " << c << endl ; int e = 10; // 测试自增、自减 c = e++; // e++ 是先使用 e 的值执行该行命令,执行完后再对 e 的值加 1 cout << "e 等于 " << e << endl; cout << "c 等于 " << c << endl ; return 0; } 输出结果: d 等于 11 c 等于 11 e 等于 11 c 等于 10自减运算符同理。
ganleiboy
gan***boy@sina.com
Iugon
266***8984@qq.com
不管是自增运算符,还是自减运算符,它们只能作用于可变左值,而不能表达式,如下:
#include<iostream> using namesapce std; int main() { int m=3,n=9,x; x=(m+n)++; //错误,自增运算符不能作用于表达式 x=m++; //正确,输出结果为3 x=++n; //正确,输出结果为10 return 0; }Iugon
266***8984@qq.com
Sonui
123***3.cn
自增/自减运算符对于指针变量进行操作时候要注意使用:
#include<iostream> using namesapce std; int main(){ int *a = new int(6); cout << a << endl; *a -= 1; cout << a << endl; cout << *a << endl; *a--; cout << a << endl; cout << *a << endl; return 0; /* * 0xd81750 a的地址 * 0xd81750 a的地址 * 5 * 0xd8174c a的地址少了4 * 469788465 值错误 */ }Sonui
123***3.cn