第四章 表达式

4.1 基础

  • 当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)

  • 书写复合表达式时:1.拿不准的时候最好用括号来强制让表达式的组合关系符合程序逻辑的要求;2.如果改变了某个运算对象的值,在表示式的其他地方不要再使用这个运算对象,除非当改变运算对象的子表达式本身就是另外一个子表达式的运算对象时该规则无效。

4.2 算术运算符

  • 待补充

4.3 逻辑和关系运算符

  • 关系运算符作用于算术类型或指针类型,逻辑运算符作用于任意能转换成布尔值的类型。

  • 进行比较运算时除非比较的对象是布尔类型,否则不要使用布尔字面值true和false作为运算对象。

4.4 赋值运算符

  • 对于类类型来说,赋值运算的细节由类本身决定。

  • 使用复合运算符只求值一次,使用普通的运算符则求值两次。一次作为右边子表达式的一部分求值,另一次是作为赋值运算的左侧运算对象求值。

4.5 递增和递减运算符

  • 除非必须,否则不用递增递减运算符的后置版本。前置版本的递增运算符避免了不必要的工作,它把值加1后直接返回改变了的运算对象。

  • 后置递增运算符的优先级高于解引用运算符,因此*pbeg等价于*(pbeg++)

4.6 成员访问运算符

  • 解引用运算符的优先级低于点运算符,所以执行解引用运算的子表达式两端必须加上括号,例如,(*p).size()。

4.7 条件运算符

  • 当条件运算符的两个表达式都是左值或者能转换成同一种左值类型时,运算的结果是左值;否则运算的结果是右值。

  • 条件运算的嵌套最好别超过两到三层,条件运算符满足右结合律。
    cout << ( ( grad < 60 ) ? "fail" : "pass" ) ;

4.8 位运算符

  • 位运算符作用于整数类型的运算对象。关于符号位如何处理没有明确的规定,所以强烈建议仅将位运算符用于处理无符号类型。

  • 左移运算符(<<)在右侧插入值为0的二进制位。右移运算符(>>)的行为则依赖于其左侧运算对象的类型。

  • 移位运算符(又叫IO运算符)满足左结合律。

4.9 sizeof 运算符

  • sizeof运算符返回一条表达式或一个类型名字所占的字节数。

4.10 逗号运算符

  • 逗号运算符含有两个运算对象,按照从左到右的顺序一次求值。逗号运算符真正的结果是右侧表达式的值。

4.11 类型转换(难点)

  • C++语言不会直接将两个不同类型的值相加,而是先根据类型转换规则设法将运算对象的类型统一后再求值。

  • 待补充

4.12 运算符优先级表

  • 待补充

待完善…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值