文章来源学习地址:https://download.csdn.net/download/monkeylee2011/62474922
《内容导向》
1. long long
c++11新增:long long 64位有符号整数类型,对应的,unsigned long long 为无符号64位整数类型。
c++ 标准为 long long 和unsigned long long 定义了两种字面量后缀,分别为 LL, ULL
字面量后缀在某些场景下需用到才能使代码逻辑准确,看代码:
long long t_lData1 = 65536 << 16;//左移16位
std::cout<<"t_lData1="<<t_lData1<<std::endl;//t_lData1值为0,因为默认65536被当作32位整型数据操作,
long long t_lData2 = 65536LL <<16;
std::cout<<"t_lData2="<<t_lData2<<std::endl;
2. char16_t & char32_t
c++11 新增:char16_t 和char32_t 两种字符类型,char16_t占2字节,char32_t 占4字节,分别用来对应Unicode字符集的UTF-16 和UTF-32.
当前,Unicode字符集有UTF-8 ,UTF-16和UTF32这三种编码方法,三者区别是使用不同的内存空间进行编码。具体编码规则不在这里赘述。
除此之外,c++11为三种编码提供了新前缀用于声明3种编码字符和字符串字面量,分别是:UTF-8使用前缀u8,UTF-16使用前缀u,UTF-32使用前缀U。
char8_t utf8[] = u8"你好";
char16_t utf16 = u'好';
char32_t utf32[] = U"你好";
除此之外,c++标准库的字符串也加入了对新字符类型的支持:
using u16string = basic_string;
using u32string = basic_string;
3. char8_t
c++20 引入:char8_t字符类型,可以代替char作为UTF-8的字符类型。char8_t具有和unsigned char相同的符号属性、存储大小、对齐方式以及整数转换等级。