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

整数类型long long

long long该类型实际上我们很早就开始使用了,但是是直到C++11才加入标准中的;
long一般表示一个32位的整型,long long一般表示64位的整型;
long long是一个有符号的整型,对应无符号是unsigned long long;
C++标准顶定义,long long至少是一个64位的整型,注意,这里是至少,说明某些平台可能比这个还要大。

定义是可以使用LL和ULL进行区分:

long long a = 10000;
long long b = 10ll;
unsigned long long c = 2;
unsigned long long d = 3ull;
auto d = 9999999ll;

获取当前平台C++编译器中long long等类型数的最值:

#include <iostream>
#include <limits>

int main() {
  std::cout << "long max = " << std::numeric_limits<long>::min() << std::endl;
  std::cout << "long max = " << std::numeric_limits<long>::max() << std::endl;

  std::cout << "unsigned long min = "
            << std::numeric_limits<unsigned long>::min() << std::endl;
  std::cout << "unsigned long min = "
            << std::numeric_limits<unsigned long>::max() << std::endl;

  std::cout << "long long min = " << std::numeric_limits<long long>::min()
            << std::endl;
  std::cout << "long long max = " << std::numeric_limits<long long>::max()
            << std::endl;

  std::cout << "unsigned long long min = "
            << std::numeric_limits<unsigned long long>::min() << std::endl;
  std::cout << "unsigned long long max = "
            << std::numeric_limits<unsigned long long>::max() << std::endl;

  return 0;
}

输出结果:

long min = -9223372036854775808
long max = 9223372036854775807
unsigned long min = 0
unsigned long max = 18446744073709551615
long long min = -9223372036854775808
long long max = 9223372036854775807
unsigned long long min = 0
unsigned long long max = 18446744073709551615

新字符类型 char16_t 和 char32_t

C++11标准添加 这两种类型是为了应对Unicode字符集的UTF-16和UTF-32两种编码方式;
在此标准出现之前,使用char类型处理UTF-8编码的字符,但是对于UTF-16,与UTF-32则没有;

C++11为这三种编码方式提供新前缀:

u8:char    该类型在c++11,c++14中无法编译,只能在支持c++17起的编译器进行编译
u :char16_t
U :char32_t

定义变量或者数组的时候,和char有一点点区别,需要加前缀:

  char a = u8'a';
  char16_t b = u'好';
  char32_t c = U'好';
  char16_t d[] = u"你是真的好";
  char32_t e[] = U"你是真的好";

在linux系统中使用g++进行编译时,需要使用-std=c++17开始的标准进行编译,否则变量a会无法编译通过。

c++标准库已经添加了对新字符类型的支持:

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

基本的使用:

  std::u16string f = u"123456";
  std::u32string g = U"456789";
  std::wstring   h = L"0123";
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值