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

整数类型 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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C11是C语言的最标准,相对于以前的版本增加了许多功能。《深入理解C 11》是一本介绍C11标准的书,帮助读者更好地理解C11语言特性和用法。这本书不仅适合想要学习C11的开发者,还适合已经掌握C语言基础,想要扩展自己技能的编程人员。 《深入理解C 11》一书包含了丰富的例子和解释,涵盖了C11标准中的许多功能,如多线程和原子操作、内存模型、泛型和灵活数组、_Generic宏、静态断言、noreturn等。这些特性提高了C语言的灵活性、可读性和可维护性。 本书还讨论了内存管理、文件操作、指针、函数指针、结构体和联合体、枚举类型等C语言的常用部分,并对C11中增的相关特性给予了讲解,让读者在学习过程中更好地感受到特性的优越性。 综上所述,《深入理解C 11》是一本非常有价值的书,可以帮助读者在C语言开发中更好地应用C11的特性,提高代码的质量和效率。同时,这本书也是一本值得收藏的参考书,极大地丰富了读者关于C语言的知识储备。 ### 回答2: PDF文档《深入理解C11》是一本关于C11语言的详细介绍与讲解,它包含了C11语言基础知识、高级特性、编程技巧等方面的内容,涵盖了C语言从入门到精通的全过程。 在《深入理解C11》这本书中,首先介绍了C语言基础知识,如变量、常量、运算符、表达式、控制结构等。这些内容对于初学者来说非常重要,因为它们是C语言编程的基础。 接着,该书详细介绍了C11语言的高级特性,如泛型、可变参数、内存管理、并发编程等。这些特性为程序员编写高效、灵活、可扩展的代码提供了强大的支持,能够帮助程序员更加高效地解决实际问题。 最后,该书还介绍了一些实用的编程技巧和工具,如调试技巧、优化技巧、代码审查、版本控制等。这些内容可以让程序员更加高效地编写、调试和维护代码,提高自己的编程水平。 总之,深入理解C11 PDF文档是对于C语言学习和应用的一本权威指南,在这本书中,读者可以学习到C语言的重要概念、高级特性以及实用的编程技巧,能够帮助程序员更好地理解C语言并应用在实际的编程工作中。 ### 回答3: C++ 11 是C++编程语言的更版本,它是一个重要的改进和扩展,旨在使C++更加现代,更加高效和更加易用。深入理解C++ 11 PDF是一本非常好的C++ 11 学习和参考资料,非常详细地介绍了这种版本的各种特性和优点。这本书从C++ 11 特性的基础开始,涵盖了所有C++11语言、标准库和STL组件。 这本书探讨了许多改进和扩展的细节,比如多线程,类别枚举,lambda表达式、常量表达式、右值引用、类型推断及其它特性。它为读者提供了一种深入了解C++ 11 标准的方式,并通过一些实例和演示帮助读者理解各个特性和技术的实际应用。此外,这本书还包括了一些关于C++ 11语言规范和标准库的细节。 深入理解C++ 11 PDF对于 C++ 编程的学习者,特别是那些希望利用C++ 11特性来提高代码性能和可靠性的专业人员来说是一个宝贵的资料。掌握 C++ 11 的语言特性、标准库和STL组件可以让您编写更简洁,更可读性和更高效的代码,并增强您的编程技能和能力。总之,这本书是C++11的权威指南,值得一读。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值