C++primer第四章表达式
4.1 基础
4.1.1 基本概念
当一个对象作为右值时,用的是对象的值。当一个对象作为左值时,用的是对象的身份(在内存中的位置)。
如果表达式的求值结果是左值,decltype作用于该表达式得到一个引用类型。
4.1.2 优先级与结合律
括号优先级比较高。在第四章结尾处附上了一张表,组的位置越靠前组内运算符优先级越高。
4.1.3 求值顺序
这里讲的比较模糊,我认为C++为了效率,在求值顺序上留下了很多编译器自主发挥的空间,但是我们只需注意一条,当不会改变同一对象的状态也不执行IO任务时,函数的调用顺序不受限制。
4.2 算术运算符
当计算的结果超出类型所能表示的范围就会产生溢出。
参与取余运算的对象必须是整数类型。m%n的符号和m匹配。
4.3 逻辑和关系运算符
对于这两种运算符而言,运算对象和求值结果都是右值。
逻辑与运算符和逻辑或运算符都是短路求值(即当且仅当左侧运算对象无法确定表达式结果时才会对右侧运算对象进行运算)。
4.4 赋值运算符
赋值运算符的左侧对象必须是一个可修改的左值。当两侧对象类型不一致时,右侧对象将转换为左侧对象的类型。
4.5 递增和递减运算符
前置递增运算符将改变后的对象作为求值结果。
后置递增运算符将对象原始值的副本作为求值结果。
4.6 成员访问运算符
解引用的优先级比点运算符的优先级低。
4.7 条件运算符
条件运算符表达式:
cond?expr1:expr2
允许在条件运算符的内部嵌套另外一个条件运算符。
4.8 位运算符
没看懂
4.9 sizeof运算符
表达一个类型所占字节数,所得的值是一个size_t类型,需要注意到它的优先级。另外它可以直接对数组求大小,并且不会把数组名转换为指针。
4.10 逗号运算符
简单介绍了一下逗号运算符。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现