C++ Primer Chapter4 表达式

181 阅读2分钟

第四章 表达式

声明: 本文为《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 位运算符

运算符功能用法备注
~位求反~expr1置为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

由于强制类型转换干扰了正常的类型检查,因此建议避免强制类型转换。

:::