第四章 表达式
声明:
本文为《C++ Primer 中文版(第五版)》学习笔记。
原书更为详细,本文仅作学习交流使用,未经授权禁止转载。
在公众号【Jacen的技术笔记】,回复 C++,即可获得 两万字C++ Primer 要点整理PDF。
P120-P151
4.1 基础
重载运算符:为已经存在的运算符赋予了另外一层含义。
左值、右值:
当一个对象用作右值的时候,用的是对象的值(内容)。
当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。
4.2 算术运算符
%:参与取余运算的运算对象必须是整数类型。
4.3 逻辑和关系运算符
运算符 |
---|
! |
< |
<= |
> |
>= |
== |
!= |
&& |
|| |
&& 运算符和 || 运算符都是先求左侧运算对象的值再求右侧运算对象的值。
::: warning
进行比较运算的时候,除非比较的对象是bool类型,否则不要使用布尔字面值true,false作为运算对象。
:::
4.4 赋值运算符
赋值运算符满足右结合律。
不要混淆相等运算符和赋值运算符
if (i = j)
if (i == j)
4.5 递增和递减运算符
递增运算符 ++
递减运算符 --
4.6 成员访问运算符
点运算符和箭头运算符
n = (*p).size();
n = p->size();
4.7 条件运算符
condition ? expression1 : expression2;
4.8 位运算符
运算符 | 功能 | 用法 | 备注 |
---|---|---|---|
~ | 位求反 | ~expr | 1置为0,0置为1 |
<< | 左移 | expr << expr2 | 在右侧插入值位0的二进制位 |
>> | 右移 | expr1 >> expr2 | |
& | 位与 | expr1 & expr2 | 对应位置都是1,则结果1,否则为0。 |
^ | 位异或 | expr1 ^ expr2 | 对应位置有且只有1个为1,则结果是1,否则为0。 |
| | 位或 | expr1 | expr2 | 对应位置至少有1个位1,则结果是1,否则为0。 |
4.9 sizeof运算符
sizeof运算符返回一条表达式或一个类型名字所占的字节数,其所得值是一个size_t类型,是一个常量表达式。
sizeof (type)
sizeof expr
4.10 逗号运算符
逗号运算符含有两个运算对象,按照从左向右的顺序依次求值。
4.11 类型转换
隐式转换
显式转换
命名的强制类型转换
cast-name<type>(expression)
// cast-name是static_cast,dynamic_cast,const_cast,reinterpret_cast
::: tip
由于强制类型转换干扰了正常的类型检查,因此建议避免强制类型转换。
:::