基本概念

C++定义了一元运算符(unary operator)和二元运算符(binary operator)。作用于一个运算对象的运算符是一元运算符,如取地址符(&) 和解引用符();作用于两个运算对象的运算符是二元运算符,如相等运算符(==)和乘法运算符()。 除此之外,还有一个作用于三个运算对象的三元运算符。函数调用也是一种特殊的运算符,它对运算对象的数量没有限制。

递增与递减运算符

1
2
3
int i = 0, j;
j = ++i; // j = 1, i = 1; 前置版本 得到递增后的值
j = i++; // j = 1, i = 2; 后置版本 得到递增前的值

建议:除非必须,否则不用递增递减运算符的后置版本

PS: *pbeg++等价于*(pbeg++)

条件运算符

cond? expr1: expr2;

其中cond是判断条件的表达式,而expr1和expr2是两个类型相同或可能转换为某个公共类型的表达式。条件运算符的执行过程是:首先求cond的值,如果条件为真对expr1求值并返回该值,否则对expr2 求值并返回该值。举个例子,我们可以使用条件运算符判断成绩是否合格:

1
string finalgrade = (grade < 60) ? "fail" : "pass";

通过嵌套可以分为三级

1
finalgrade = (grade > 90) ? "high pass" : (grade < 60) ? "fail" : "pass";