C++踩坑记录
1. 数组智能指针
在创建指向数组的智能指针时需要注意传入模板的类型需要加中括号,例如创建八个元素的整数数组指针std::unique_ptr<int[]> ptr = std::make_unique<int[]>(8)
2. 移位操作
移位运算符即按二进制形式把所有数字向左移动相应的位数,高位舍弃,空位补0。因此移位后返回的字符宽度与需要移位的数字字符宽度保持一致
注意移动的位数不得超过变量的字符宽度,不然会导致未定义行为
此时便出现了易错点:移位操作时存在整数提升现象,即小于或等于int
的整数类型在运算时会被自动提升为int
或unsigned int
(当int
不够存储原类型数据),这样是不安全的,因此需要在移位前先显示进行类型转换
参考文章C++ 整数提升与移位陷阱
参考文章C++移位运算符详解
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 雯欂の修仙笔记!