C++primer笔记————第三章

表达式
  1. 两个整数相除的结果总是整数,如果结果有小数部分,便会被截掉。
  2. %操作符用于求余,若两个操作数都为正数,则余数为正数,若有一个为负数或者两个都为负数,则结果符号取决与机器,因此移植性无法保证。
  3. static_cast something 显式类型转换或者强制类型转换。
  4. 逻辑与操作符两边的操作数被保证按照从左到右的顺序进行计算。因此,如果左边表达式如果为false,那么不会进行右边表达式的计算。
  5. 二元关系操作符(<=和>=)的计算顺序在标准C和C++中都是为定义的,因此计算过程必须与顺序无关。
  6. 赋值不等于初始化,一个对象只能初始化一次,但是可以被赋值多次。
  7. 赋值操作符的左操作数必须为左值————即,它必须有一个相关的、可写的地址值。
  8. 赋值的结果是实际上被放在左操作数相关内存中的值。
  9. 复合赋值操作符:+= -= ×= /= %= <<= >>= &= ^= |=
  10. C++ 为先将C使用,在++,++C为先++,再使用。
  11. 可以用算数类型的数据给复数类型初始化或者赋值,但是不可以直接用复数类型给算数类型进行初始化或者赋值。
  12. 条件操作符的语法格式: expr1 ? expr2 : expr3 ,如果expr1的结果为true,执行expr2 。如果为false,执行expr3
  13. sizeof操作符的作用是返回一个对象或者类型名的字节长度
  14. sizeof操作符是在编译时刻进行计算,因此被看作是常量表达式。
  15. 系统为每个程序提供了一个在程序执行时可用的内存池。这个可用的内存池被成为程序的空闲存储区或堆。
    运行时刻的内存分配被称为动态内存分配。
  16. 在类对象数组的情况下,如果我们定义了默认构造函数,那么它将被顺次应用在数组的每一个元素上。
  17. 所有从空闲存储区分配的对象都是未命名的,new表达式并不会返回实际被分配的对象,而是返回这个对象的地址,该对象的所有操作都是通过这个地址间接来完成的。
  18. 逗号表达式是一系列由逗号分开的表达式,这些表达式从左到右进行计算。逗号表达式的结果是最右边表达式的值。
  19. 位操作符把操作数解释为有序的位集合,这些位可能是独立的,也可能组成域。
  20. 位操作符允许程序员设置或者测试独立的位或位域
  21. 如果一个对象被用作一组位或位域的离散集合,那么这样的对象被称为位向量。
  22. 左移操作符从右边开始用0补位,右移操作符如果移动无符号数,则右边用0补位,如果是有符号数,则补符号位的拷贝或者是0,这取决于具体实现定义。
  23. 声明bitset对象在默认情况下所有位都被初始化为0。
  24. 算术转换的两个原则:
    1. 为了防止精度缺失,如果有必要的话,类型总是被提升为较宽的类型。
    2. 所有含有小于整型的整值类型的算术表达式,在计算之前,其类型都会被转换成整型。
  25. (void*)型指针又被称为泛型指针,但是这类指针无法直接被解除引用,因为没有类型信息用来指导编译器解释底层的位模式。
  26. 执行显式转换的原因:
    1. 不存在void*指针向特殊指针之间的自动转换。
    2. 希望改变通常的标准转换
    3. 避免出现多种转换可能的歧义情况
文章目录
  1. 1. 表达式
,