在 C/C++ 中使用字面常量时,有几个重要的注意事项需要考虑,以确保代码的准确性和可移植性。下面是一些关键要点:
- 整数字面量:
- 默认情况下,整数字面量是
int
类型。如果字面量的值超出了int
的范围,它将被视为long int
或long long int
,这取决于它的值和编译器。 - 可以在整数字面量后添加
L
或l
后缀来明确指定它为long
类型,或使用LL
或ll
后缀指定为long long
类型。 - 使用
U
或u
后缀表示无符号类型,例如unsigned int
。
- 默认情况下,整数字面量是
- 浮点数字面量:
- 默认情况下,浮点数字面量是
double
类型。 - 使用
F
或f
后缀可以指定字面量为float
类型,而L
或l
后缀表示long double
类型。
- 默认情况下,浮点数字面量是
- 字符和字符串字面量:
- 字符字面量(如
'a'
)是单引号括起来的单个字符,而字符串字面量(如"hello"
)是双引号括起来的字符序列。 - 字符串字面量实际上代表了一个以null字符(
'\0'
)结尾的字符数组。
- 字符字面量(如
- 布尔字面量:
- C++(但不是 C)支持布尔字面量
true
和false
。
- C++(但不是 C)支持布尔字面量
- 转义序列:
- 在字符和字符串字面量中,可以使用转义序列(如
'\n'
表示换行,'\t'
表示制表符)来表示无法直接在代码中出现的字符。
- 在字符和字符串字面量中,可以使用转义序列(如
- 字面量的类型和大小:
- 需要注意字面量的类型和大小,以避免隐式类型转换导致的意外行为或数据丢失。
- 可移植性:
- 在不同的编译器和平台上,字面量的处理可能略有不同。为了编写可移植的代码,应明确指定字面量的类型,并避免使用依赖于特定平台行为的代码。
- 十六进制和八进制字面量:
- 十六进制字面量以
0x
或0X
开头,八进制字面量以0
开头。
- 十六进制字面量以
遵循这些注意事项可以写出更清晰、更可移植和更健壮的 C/C++ 代码。
更进一步地,可参见下列文章,详细介绍字面常量的使用要点:
- 转义字符的反斜杠不可误写成斜杠
- 在字符常量中用转义字符表示制表符和控制字符
- 在字符串常量中用转义字符表示制表符和控制字符
- 8 进制或 16 进制转义字符不应与其他字符连在一起
- 不应使用非标准转义字符
- 不应连接不同前缀的字符串常量
- 字符串常量中不应存在拼写错误
- 常量后缀由应由大写字母组成
- 无符号整数常量应具有后缀 U
- 不应使用非标准常量后缀
- 禁用 8 进制常量
- 小心遗漏逗号导致的非预期字符串连接
- 不应存在 magic number
- 不应存在 magic string
- 不应使用多字符常量
- 合理使用数字分隔符
- 不应使用宏定义常量
- C 格式化字符串应为常量
标签:字符,常量,后缀,C++,long,注意事项,字符串,字面 From: https://www.cnblogs.com/lucky-bubble/p/18335922