C++中提高代码稳定性和兼容性的语法

目录

1、原始字面量

2、long long型

3、类初始化新特性

4、final和override

5、模板优化

5.1 c++11支持>>连在一起写

5.2模板可以有默认的模板参数(C++98)

5.3 函数可以有默认的模板参数

6、数值类型和字符串转换

​7、静态断言(static_assert)

8、异常


1、原始字面量

       ​ 在 C++11 中添加了定义原始字符串的字面量,定义方式为:R “xxx(原始字符串)xxx” 其中()两边的字符串可以省略。原始字面量 R 可以直接表示字符串的实际含义,而不需要额外对字符串做转义或连接等操作。

void CplussVersion11::R_Test()
{
    //原始字面量 R “xxx (raw string) xxx”,()两边的字符串在解析的时候是会被忽略的
    //因此一般不用指定。如果在()前后指定了字符串,那么前后的字符串必须相同,否则会出现语法错误
    std::string str = "D:\hello\world\test.text";
    std::cout << str << std::endl;
    std::string str1 = "D:\\hello\\world\\test.text";
    std::cout << str1 <<std::endl;
    std::string str2 = R"(D:\hello\world\test.text)";//避免转义\ 跨行等R"(STR)"
    std::string str3 = R"test(\n\r\t\m\s\o\p\)test";
    std::cout << str2 <<std::endl<<str3<<std:: endl;
}

        

2、long long型

    C++11 标准要求 long long 整型可以在不同平台上有不同的长度,但至少有64位。long long 整型有两种表示
    long long 与long long int  signed long long   signed long long int等价
   
 long long num1 = 123456789LL;//longlong型数据可以用LL或者ll进行后缀表示
 long long num2 = 123456789ll;
    unsigned long long - 对应类型的数值可以使用 ULL(大写) 或者 ull(小写) 或者 Ull、uLL(等大小写混合)后缀;等价于unsigned long long int
    
unsigned long long num3 = 123456781234ull;
std::cout << num1 << std::endl << num2 << std::endl << num3 << std::endl;
    同其他的整型一样,要了解平台上 long long 大小的方法就是查看 <climits>(或 <limits. h> )中的宏与 long long 整 型相关的一共有 3 个:
        
        LLONG_MIN - 最小的 long long 值
        LLONG_MAX - 最大的 long long 值
        ULLONG MAX - 最大的 unsigned long long 值

std::cout << LLONG_MAX << std::endl 
<< LLONG_MIN << std::endl
<< ULLONG_MAX << std::endl;
    C++11 中一共只定义了以下 5 种标准的有符号整型:同时每一种整形对应有相同长度的无符号整型
​
        signed char   
        short int
        int
        long int
        long long int
        
   std::cout << "SCHAR_MAX"<<SCHAR_MAX << " "<<"SCHAR_MIN"<<SCHAR_MIN<<  std::endl;
   std::cout << "UCHAR_MAX" << UCHAR_MAX <<std::endl;
   std::cout << "LONG_MAX" << LONG_MAX << " " << "LONG_MIN" << LONG_MIN << std::endl;
    
    如果参与运算的数据或者传递的参数类型不匹配,整型间会发生隐式的转换,这种过程通常被称为整型的提升。
    比如如下表达式∶(int)num1 + (long long)num2
    长度越大的整型等级越高,比如 long long int 的等级会高于 int。
    长度相同的情况下,标准整型的等级高于扩展类型,比如 long long int 和 int64 如果都是 64 位长度,则 long long int 类型的等级更高。
    相同大小的有符号类型和无符号类型的等级相同,long long int 和 unsigned longlong int 的等级就相同。
    转换过程中,低等级整型需要转换为高等级整型,有符号的需要转换为无符号整形。
    

3、类初始化新特性

       在进行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值