简洁可以成为一种美德
- p132
《C++ Primer》摘记 (C++ 11)
第四章 表达式
4.5 递增和递减运算符
建议:除非必须,否则不用递增递减运算符的后置版本,优先考虑使用
--i,++i
原因:后置版本需要将原始值存储下来以便于返回这个未修改的值
4.11 类型转换
4.11.1 算术转换
整型提升 (integeral promotion):小整数类型转换为大整数类型,对于 bool, char, signed char, unsigned char, short
和 unsigned short
等类型来说,只要它们所有可能的值都在 int 类型范围内,它们就会提升为 int
类型。对于较大的 char
类型 (wchar_t, char16_t, char32_t)
提升为 int, unsigned int, long, unsigned long, long long
和 unsigned long long
中能容纳原类型所有可能值的最小一种类型。
如果某个运算符的运算对象类型不一致,这些运算对象将转换成同一种类型。
- 首先执行
整型提升
- 若符号一致,则进一步提升至同一类型为止。
- 若符号不一致,且如果无符号类型不小于带符号类型,则带符号的运算对象转换成无符号类型。比如
unsigned int
和int
,int
要转换为unsigned int
。
但如果带符号类型大于无符号类型,此时转换结果依赖于机器。如果无符号类型的所有值都在该带符号类型范围内,则无符号类型转化为带符号类型;如果不能,则带符号类型转化为无符号类型。比如long
和unsigned int
,若long
和int
大小一致,则long
要转换为unsigned int
;若long
比int
所占空间大,则unsigned int
要转换为long
。
第六章 函数
6.2 参数传递
6.2.2 传引用参数
建议:使用引用避免拷贝
原因:拷贝大的类类型对象或者容器对象比较低效,甚至有的类类型(包括 IO 类型在内)根本不支持拷贝操作。