c++ primer 第四章查漏补缺

1.运算符的优先级只规定运算对象的组合方式,没有说明运算对象按照什么顺序求值,因此如果改变了某个运算对象的值,在表达式其他地方最好就别用了。
举个例子 *beg = toupper(*beg++);

2.简单来说左值是某个位置的值的引用,右值是某个值。左值能当右值用,右值不能当左值用。(还有一种理解,等号左边和等号右边的值)左值表达式返回的是引用。不同运算符返回不同的左值或是右值,具体要翻书查询

3.将参数设置为引用可以避免对元素的拷贝。

4.逻辑与运算符和逻辑或运算符都是先求左侧运算对象的值再求右侧运算对象的值,当且仅当左侧运算对象无法确定表达式的结果时才会计算右侧运算对象的值。这种策略称为短路求值。
而相等性运算符未定义求值顺序。

5.指针和整形不能相互转化。

6.递增运算前置版本(++j)返回左值,递增运算后置版本(j++)返回右值。尽量使用前置版本减小开销。

7.嵌套条件运算符和赋值运算符是左结合律

8.使用移位运算符时建议只处理无符号类型

9.逗号运算符返回的是最右边的结果

10.static_cast和reinterpret_cast的区别在于,只有reinterpret_cast能直接将非void*指针转化为其他类型的指针。尽管如此,我们还是可以用static_cast间接改变指针类型。

int main(){
    int a;
    void* b = &a;
    char* c = static_cast<char*>(b);
}

11.隐式类型转换–算术转换–整型提升–无符号类型运算规则:
如果无符号类型长度大于或等于符号类型长度,则会将符号转化为无符号。
如果小于,则要看无符号类型是否所有值都能存在符号类型里面。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值