C++ Primer Rush 2.1基本内置类型

2.1 基本内置类型

C++定义了一套包括算数类型arithmetic type)和空类型void)在内的基本数据类型。其中算数类型包含了字符、整型数、布尔值和浮点数。空类型不对应具体的值,仅用于一些特殊的场合,例如最常见的是,当函数不返回任何值时,使用空类型作为返回类型。

2.1.1算数类型

算数类型分为两类:整型integral type,包括字符和布尔类型在内)和浮点型

算数类型的尺寸(也就是该类型数据所占的比特数)在不同机器上有所差别。表2.1列出了C++标准规定的尺寸的最小值,同时允许编译器赋予这些类型更大的尺寸。某一类型所占的比特数不同,他所能表示的数据范围也不一样。

表2.1:C++:算数类型
类型含义

最小尺寸

bool布尔类型未定义
char字符8位
wchar_t宽字符16位
char16_tUnicode字符16位
char32_tUnicode字符32位
short短整型16位
int整型16位
long长整型32位
long long长整型64位
float单精度浮点数6位有效数字
double双精度浮点数

10位有效数字

long double扩展精度浮点数10位有效数字

 

建议:如何选择类型

  • 当明确知晓数值不可能为负时,选用无符号类型。
  • 使用int执行整数运算。在实际应用中,short 常常显得太小而 long 一般和 int 有一样的尺寸。如果你的数值超过了 int 的标识范围,选用 long long。
  • 在算数表达式中不要使用char或bool,只有在存放字符或布尔值时才使用它们。因为类型 char 在一些机器上是有符号的,而在另一些机器上又是无符号的,所以如果 char 进行运算特别容易出问题。如果你需要使用一个不大的整数,那么明确指定它的类型是 signed char 或者 unsigned char。
  • 执行浮点数运算选用 double,这是因为 float 通常精度不够而且双精度浮点数和单精度浮点数的计算代价相差无几。事实上,对于某些机器来说,双精度发运算甚至比单精度还快。long double 提供的精度在一般情况下是没有必要的,况且它带来的运行时损耗也不容忽视。

 

2.1.3 字面值常量

指定字面值的类型

通过前缀和后缀可以改变整型、浮点型和字符型字面值的默认类型

L'a'宽字符型字面值,类型是 wchar_t
u8"hi!"utf-8 字符串字面值( utf-8 用 8 位编码一个Unicode字符)
42ULL无符号整型字面值,类型是 unsigned long long
1E-3F当精度浮点型字面值,类型是float
3.14159L扩展精度浮点型字面值,类型是 long double
字符和字符串字面值
前缀含义类型
uUnicode 16 字符char16_t
UUnicode 32 字符char32_t
L宽字符wchar_t
u8UTF-8(仅用于字符串字面常量)char

 

整型字面值
后缀最小匹配类型
u or Uunsigned
l or Llong
ll or LLlong long

 

浮点型字面值
后缀类型
f or Ffloat
l or Llong double

 

布尔字面值和指针字面值

true 和 false 是布尔类型的字面值:

bool test = false;

nullptr 是指针字面值(2.3.2节将有更多关于指针和指针字面值的介绍)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值