首页 > 编程语言 >C++11~C++20 新基础类型

C++11~C++20 新基础类型

时间:2022-09-05 22:45:43浏览次数:98  
标签:11 字符 20 long C++ 类型 UTF

目录

整数类型 long long(C++11)

C++11 增加了 long long 和 unsigned long long 两种整数类型。

long long int 类型和 long long 等价, unsigned long long int 类型和 unsigned long long 等价。

可以用后缀 LLULL 来表示这两种类型的变量:

long long x = 65536LL;		
long long y = 65536ULL;

C++ 标准中使用了宏 LLONG_MAXLLONG_MINULLONG_MAX等表示新整数类型的最大值和最小值(unsigned long long int 的最小值毫无疑问是 0)。

来看一个例子:

#include <iostream>
#include <climits>

int main(int argc, char *argv[]) {
    std::cout << "LLONG_MAX: " << LLONG_MAX << std::endl;
    std::cout << "LLONG_MIN: " << LLONG_MIN << std::endl;
    std::cout << "ULLONG_MAX: " << ULLONG_MAX << std::endl;
    return 0;
}

运行结果:

linrongjian@hhb-ssd:/data/modern_cpp$ g++ -std=c++11 new_type.cpp -o new_type
linrongjian@hhb-ssd:/data/modern_cpp$ ./new_type
LLONG_MAX: 9223372036854775807
LLONG_MIN: -9223372036854775808
ULLONG_MAX: 18446744073709551615

字符类型 char16_t 和 char32_t(C++11)

C++11 增加了两种字符类型 char16_t 和 char32_t,分别对应 Unicode 字符集的 UTF-16 和 UTF-32 编码方法。

普通的 char 类型针对的是 UTF-8 编码,C++11 为三种编码提供了前缀(加在字符常量前面): u8UTF-8)、uUTF-16)UUTF-32)。

C++11 为什么要引入 char16_t 和 char32_t?

C++98 的宽字符类型 wchar_t 在不同的平台长度不同,因此也就会导致不同的行为。

char16_t 和 char32_t 的引入就是为了解决这个问题,它们明确规定了所占内存空间的大小:char16_t 占 2 字节,char32_t 占 4 字节。

C++ 标准的字符串也加入了对新字符类型的支持:

usinig u16string = basic_string<char16_t>;
usinig u32string = basic_string<char32_t>;
usinig wstring = basic_string<wchar_t>;

字符类型 char8_t(C++20)

C++20 之前使用 char 处理 UTF-8 字符,但是当库函数要同时处理多种字符时需要区分普通字符和 UTF-8 字符。

于是,C++20 引入了 char8_t 字符类型,它代替了 char 作为 UTF-8 的字符类型。

char8_t 类型和 unsigned char 具有相同的符号属性、存储大小、对齐方式以及整数转换等级。

参考资料

  1. 现代C++语言核心特性解析
  2. cppreference:char16_t

标签:11,字符,20,long,C++,类型,UTF
From: https://www.cnblogs.com/linrj/p/16659888.html

相关文章

  • 2022-9-5
    2022-9-5HWS2022-Re1这题也算复习了一下tea,踩了一下几个做题的坑,希望自己下次做tea的时候可以注意1.注意ida的赋值问题,要了解出题人的代码规范和习惯2.注意sum值的变化......
  • 1151:素数个数
    编程求2-n中有多少个素数。#include<iostream>usingnamespacestd;intmain(){   intn,s=0,sum=0;   cin>>n;   for(inti=2;i<=n;++i)   {    ......
  • 2022 年 9 月水题选做
    20220901SP30919GCDS-Sabbirandgcdproblem思路:显然答案就是不是任意一个数的因数的最小的质数。这个可以在线性筛的时候记录每个数的最小的素因数即可。算法:线性......
  • leetcode206:反转链表
    packagecom.mxnet;importjava.util.Stack;publicclassSolution206{publicstaticvoidmain(String[]args){}/***给你单链表的头节点......
  • 【2022-09-05】Django框架(五)
    Django框架(五)定义模型类fromdjango.dbimportmodels#Createyourmodelshere.classUser(models.Model):uid=models.AutoField(primary_key=True,ver......
  • 220905-读书笔记-把时间当做朋友
    印象中,第一次读这本书的时候,是在大学期间,应该是大一或者大二的时候,当时候自己的智识达不到理解这本书的层次。现在在读这本书,竟觉得略有些浅显。总的来说,这本书写的比较零......
  • I [NOIP2012]开车旅行 每次往第一或者第二近的点走,求最大比值 倍增算法 set
    链接:https://ac.nowcoder.com/acm/problem/16562来源:牛客网题目描述小A和小B决定利用假期外出旅行,他们将想去的城市从1到N编号,且编号较......
  • C++基础入门:C++初始
    1.C++环境:Clion搭建下载链接:clion官方网址1.1点击下载1.2下载对应版本1.3安装步骤:1.3.1下载完毕后,打开exe文件,进入安装界面,点击【Next>】1.3.2选择安装目录......
  • xx技术2023前端开发卷A
    xx技术2023前端开发卷A选择以下哪种情况会导致浏览器报HTTPS证书告警()网站的https安全证书确实已经过期,根据https安全证书签发国际标准,https安全证书颁发不能超过两......
  • 【题解】做题记录(2022.9)
    可能会断断续续的,是因为可能有的时候忘记了写记录9.5今天搞了一天的平衡树,但大部分都是比较基础的操作[SHOI2009]会场预约题目分析:set大法吼啊我们考虑重新定义两个......