1. 自增运算符(Increment Operator)
自增运算符 ++ 使操作数的值增 1,其操作数必须为可变左值(您可以简单地把可变左值理解为变量)。++ 可以置于操作数前面,也可以放在后面。例如:
++n ;
n++ ;
这两个语句产生的结果都是使 n 增 1,可以说没什么区别。使用以下语句得到的效果也是一样的:
n = n + 1 ;
尽管上面两个语句中,++ 前置和后置没有区别。但是,++ 前置和后置其实是有区别的。例如:
int n = 1, post, pre;
post = n++;
pre = ++n;
对于 post = n++; 这个语句,post 得到 n 自增前的值,因为 n++ 的值为 1。也就是说,这个语句执行完后,post 的值是 1,而 n 的值变成 2。而 pre = ++n; 这个语句,pre 得到 n 自增后的值,因为 ++n 的值为 3。也就是说,这个语句执行完后,pre 的值是 3,n 的值也是 3。
总之,无论前置还是后值,++ 都会使其操作数的值增 1。不同的是,++ 前置时,自增表达式(如 ++n)的值等于其操作数自增后的值;++ 后置时,自增表达式(如 n++)的值等于其操作数自增前的值。例如:
int n = 5, post = 1, pre = 1;
pre = ++n + pre; // 运算结束后 pre 为 7,n 为 6
n = 5;
post = n++ + post; // 运算结束后 post 为 6,n 为 6
上例中,++n 的值等于 n 自增后的值,即 6,所以 pre 最后得到的值为 7。n++ 的值等于 n 自增前的值,即 5,所以 post 最后得到的值为 6。
2. 自减运算符(Decrement Operator)
自减运算符 -- 使操作数的值减 1。同样,-- 的操作数也必须为可变左值。-- 可以置于操作数前面,也可以放在后面。例如:
--n ;
n-- ;
自减运算符和自增运算符非常相似,区别只在于自减运算符使操作数减 1,而自增运算符使操作数增 1。例如:
int n = 5, post = 1, pre = 1;
pre = --n + pre; // 运算结束后 pre 为 5
n = 5;
post = n-- + post; // 运算结束后 post 为 6