递增(increment) 及递减(decrement) 为单元运算子
运算子运算子(unary operator) ,也就是说只需要一个运算元即构成运算子,但在运算元有前后的差别!
运算子 | 功能 | 范例 |
---|---|---|
++ | 前递增 | ++一个 |
++ | 后递增 | 一个++ |
-- | 前递减 | - A |
-- | 后递减 | A - |
前递增是先进行递增,例如
a = 3;
b = 5;
c = a + ++b; // c = 3 + 6
// a = 3, b = 6
变数b先递增,然后才会与变数a相加。后递增则相反,运算式完成后才会做递增的动作,例如
a = 3;
b = 5;
c = a + b++; // c = 3 + 5
// a = 3, b = 6
同样的,递减的前、后之别与递增雷同,前递减会在运算式之前递减,后递减则是在运算式完成后才递减。
以下是整数型态做递增运算的例子
#include <iostream>
int main() {
int a = 1;
std::cout << a++ << std::endl;
std::cout << ++a << std::endl;
std::cout << a++ << std::endl;
std::cout << a << std::endl;
return 0;
}
编译后执行,结果如下
$ g++ u0402_1.cpp
$./a.out 复制代码
1
3
3
4
$
以下为整数型态做递减运算的例子
#include <iostream>
int main() {
int a = 1;
std::cout << a-- << std::endl;
std::cout << --a << std::endl;
std::cout << a-- << std::endl;
std::cout << a << std::endl;
return 0;
}
编译后执行,结果如下
$ g++ u0402_2.cpp
$./a.out 复制代码
1
-1
-1
-2
$
以下为浮点数型态做递增运算的例子
#include <iostream>
int main() {
double a = 1.2;
std::cout << a++ << std::endl;
std::cout << ++a << std::endl;
std::cout << a++ << std::endl;
std::cout << a << std::endl;
return 0;
}
编译后执行,结果如下
代码如下:
$./a.out 复制代码
1.2
3.2
3.2
4.2
$
以下为浮点数型态做递减运算的例子
#include <iostream>
int main() {
double a = 1.2;
std::cout << a-- << std::endl;
std::cout << --a << std::endl;
std::cout << a-- << std::endl;
std::cout << a << std::endl;
return 0;
}
编译后执行,结果如下
$ g++ u0402_4.cpp
$./a.out 复制代码
1.2
-0.8
-0.8
-1.8
$
字元型态也可以做递增及递减运算,例如我们可依此特性印出26 个英文小写字母
#include <iostream>
int main() {
char var = 'a';
while (var <= 'z') {
std::cout << var++;
}
std::cout << std::endl;
var -= 1;
while (var >= 'a') {
std::cout << var--;
}
std::cout << std::endl;
return 0;
}
编译后执行,结果如下
$ g++ u0402_5.cpp
$./a.out 复制代码
abcdefghijklmnopqrstuvwxyz
zyxwvutsrqponmlkjihgfedcba
$