C++ Primer读书笔记——4 表达式(2019.9.5)

本文详细介绍了C++表达式的基础,包括运算符的优先级和结合律、求值顺序,以及各种运算符的用法,如算术、逻辑、关系、赋值、递增递减、成员访问等。此外,还讨论了类型转换规则和特殊运算符如条件运算符、sizeof和逗号运算符的工作原理。
摘要由CSDN通过智能技术生成

4 表达式

4.1 基础
4.1.1 基本概念

函数调用是一种特殊的运算符,对运算对象的数量没有限制
一些符号既能做一元运算符,也能做二元运算符。例如:*做解引用时是一元运算符,做乘号时是二元运算符。这两种用法完全不相干,可以看成是两个不同的符号。
运算对象转换:二元运算符通常要求两个运算对象的类型相同。转换规则:整型和浮点型可以相互转换,小整数类型会被提升成较大的整数类型,如int。转换包括算术转换、其他的隐式转换、显示转换。
运算符重载:c++定义了运算符针对内置类型和复合类型,对于自定义类类型的运算符需要重载运算符。
重载运算符无法改变运算对象的个数、运算符优先级和结合律,只能设置运算对象的类型和返回值的类型。
**左值&右值:**当一个对象被用作右值的时候,用的是对象的值(内容);
当一个对象被用作左值的时候,用的是对象的身份(在内存中的位置);
需要右值的地方可以用左值来代替,需要左值的地方不能用右值代替。

赋值运算符需要用到左值,返回值也是左值;
取地址运算符作用于左值对象,返回值是右值;
解引用和下标运算符的返回值都是左值;
指针或者迭代器的自增或者自减运算符(前置后置都是)作用于左值;
decltype如果传入的是左值,返回引用类型;decltype((variable))的结果永远是引用。

4.1.2 优先级和结合律

如果优先级相同,组合规律由结合律决定。左结合律:从左向右算

4.1.3 求值顺序

优先级规定了运算对象的组合方式,但没有说明运算对象按照什么顺序求值,大多数情况下,不会明确指定求值顺序。运算对象的求值顺序与优先级和结合律无关。
特例:以下运算符规定了运算对象的求值顺序
①&& 先求左侧,只有当左侧为真时才继续求右侧
②|| 先求左侧,只有当左侧为假时才继续求右侧
以上两种称为“短路求值”,均是先计算左侧࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值