成员访问和条件运算符


成员访问运算符

点运算符(.)和箭头运算符(->)都可以用于访问成员,ptr->mem 等价于 (*ptr).mem
箭头运算符作用于一个指针类型的运算对象,结果是一个左值。
点运算符分为两种情况:

  • 如果成员所属的对象是左值,那么结果是左值。
  • 如果成员所属的对象是右值,那么结果是右值。

条件运算符

条件运算符(?:)可以把简单的 if-else 语句嵌入到单个表达式中。

cond ? expr1 : expr2;

首先求 cond 的值,如果条件为真对 expr1 求值并返回该值,否则对 expr2 求值并返回该值。

嵌套条件运算符

允许在条件运算符的内部嵌套另外一个条件运算符:

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

条件运算符满足右结合律,意味着运算对象按照从右向左的顺序结合,所以上面的代码,靠右边的条件运算(比较成绩是否小于60)构成了靠左边的条件运算的分支。