C++笔记6:数字字面量后缀和前缀总结

在C++中,可以在数字字面量后面添加字母后缀(或前缀)来表示特定的数据类型。这些后缀能够明确指定字面量的类型,避免类型转换带来的潜在问题。以下是常见的几种类型后缀及其含义:

1. 整数后缀

  • uU:表示 unsigned 类型。
    unsigned int a = 42U;  // 无符号整数
    
  • lL:表示 long 类型(建议使用大写 L,避免与数字 1 混淆)。
    long b = 1000L;        // long类型
    
  • llLL:表示 long long 类型。
    long long c = 9999999999LL;  // long long类型
    
  • 组合后缀:可以组合使用,如 ULunsigned long)、ULLunsigned long long)。
    unsigned long long d = 18446744073709551615ULL;
    

2. 浮点数后缀

  • fF:表示 float 类型。
    float e = 3.14F;       // float类型(单精度)
    
  • lL:表示 long double 类型。
    long double f = 3.14159265358979L;  // long double类型
    
  • 无后缀:默认是 double 类型。
    double g = 3.14;       // double类型(双精度)
    

3. 字符和字符串字面量

  • u8:表示 UTF-8 字符串字面量(C++11 起)。
    const char* str = u8"你好";  // UTF-8编码
    
  • u:表示 char16_t 类型的 Unicode 字符/字符串。
    char16_t c = u'π';       // UTF-16编码
    
  • U:表示 char32_t 类型的 Unicode 字符/字符串。
    char32_t d = U'🐶';      // UTF-32编码
    
  • L:表示宽字符/宽字符串(wchar_t 类型)。
    wchar_t wc = L'中';      // 宽字符
    

4. 二进制和十六进制前缀

  • 0b0B:表示二进制字面量(C++14 起)。
    int bin = 0b1010;       // 二进制,等于10
    
  • 0x0X:表示十六进制字面量。
    int hex = 0xFF;         // 十六进制,等于255
    
  • 0:前缀为 0 表示八进制字面量。
    int oct = 010;          // 八进制,等于8
    

示例总结

后缀类型示例
Uunsigned int42U
Llong1000L
LLlong long9999999999LL
ULunsigned long123456789UL
ULLunsigned long long18446744073709551615ULL
Ffloat3.14F
Llong double3.14159265358979L

注意事项

  1. 避免混淆LL 表示 long long,而 l 容易与数字 1 混淆,建议使用大写 L
  2. 类型范围:使用后缀可以避免隐式类型转换导致的溢出问题,例如:
    // 错误:默认是int,可能溢出
    long long overflow = 9999999999;  // 未加LL,可能导致溢出
    
    // 正确:明确指定为long long类型
    long long correct = 9999999999LL;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值