C++编程规范:避免有符号与无符号转换及类型安全
需积分: 50 199 浏览量
更新于2024-08-07
收藏 980KB PDF 举报
"C++语言编程规范内部公开2012-03-19"
本文档是华为技术有限公司内部的C++编程规范,旨在提高代码质量和可移植性。以下是规范中涉及的重要知识点:
建议12.5 避免无符号数与有符号数的转换:
在C++中,无符号数与有符号数之间的转换可能导致不一致的行为,因为不同的编译器可能有不同的处理方式。例如,当将一个`unsigned short`赋值给`long`时,不同编译器可能填充0或1到高位。为了避免潜在的问题,应尽量避免这种转换,特别是涉及不同长度数值类型的情况。推荐的做法是明确指定类型,如将`long lNum`更改为`unsigned long ulNum`。
建议12.6 创建64位常量时使用LL或ULL后缀:
在表示64位整数常量时,使用`LL`(long long)或`ULL`(unsigned long long)后缀可以明确指定类型,提高代码可读性。同时,要注意无符号与有符号整数在进行右移操作`>>`时的区别,无符号数会填充0,而有符号数可能会填充符号位。
建议12.7 区分`sizeof(void *)`和`sizeof(int)`:
在32位和64位系统中,`void *`指针的大小可能与`int`不同。为确保代码在不同架构上的正确性,应使用`intptr_t`来表示与指针大小相匹配的整数类型,而不是假设`int`的大小。
建议12.8 编译器、操作系统相关的代码独立出来:
为了提高代码的可移植性,应将特定于编译器或操作系统的代码抽象出来,封装为宏或函数。这样可以降低对特定平台的依赖,使得代码更易于在多个平台上运行。
这些规范强调了良好的编程习惯,包括类型安全、代码可读性和可移植性。遵循这些规范能够帮助开发者编写出更健壮、更易维护的C++代码。
2019-07-14 上传
点击了解资源详情
2023-09-30 上传
2022-02-19 上传
127 浏览量
152 浏览量