第2章 变量和基本类型

2.1 基本内置类型

​​​​​​​

2.1.1 算术类型

        内存计量单位说明:

  • 位:bit(binary digit,简写b),是计算机数据存储的嘴角单位,二进制中,0或1就是一个位。系统的32位和64位指的就是bit。
  • 字节:Byte(简写B),是计算机信息技术用于计量存储容量的一种计量单位,是可寻址的最小内存块。一个字节要至少能容纳及其基本字符集中的字符。通常情况下:1Byte = 8bit->1B = 8b。
  • 字:word,是存储的基本单元。通常由32比特或64比特构成,也就是4或8字节

        算术类型的尺寸,既该类型数据所占的比特数,在不同的机器上大小不同。下表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位有效数字

        一个char的大小和一个机器字节一样。C++语言规定,一个int至少和一个short一样大,一个long至少和一个int一样大,一个long long至少和一个long一样大。在编译器中,通常,float以1个字(32比特)来表示,double以2个字(64比特)来表示,long double以3或4个字(96或128比特)来表示。一般来说float和double分别由7和16个有效位。

        带符号类型和无符号类型

        带符号:int,short,long,long long

        无符号:在上述类型前加unsigned关键字

        char类型被分为了char、signed char、unsigned char三种。字符的表现形式有两种:带符号的和无符号的,char类型由编译器决定表现为上述两种形式的其中一种。

2.1.1 习题

  • 练习2.1

        答(1):int、long、long long、short之间的区别是数据类型所占的比特数不同,表达的取值范围不同。

        答(2):无符号类型和有符号类型之间的数据取值范围不同,有符号类型会将其中一个比特作为符号位。

        答(3):float为单精度浮点数,double为双精度浮点数,两者在计算代价方面相差无几,对于某些机器来说,双精度运算要比单精度运算要快。

  • 练习2.2

        答:用double类型。

2.1.2 类型转换

        对象类型定义了对象能包含的数据能参与的计算

        类型所能表示的值的范围决定了转换的过程:

  • 初始值为0布尔值为false,否则为true
  • 初始值为false结果为0,初始值为true结果为1
  • 浮点数赋值给整数时,仅保留浮点数的整数部分
  • 整数赋值给浮点数时,小数部分记为0,若整数所占空间超过浮点类型的容量,精度可能损失
  • 当给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数
  • 当给有符号类型一个超出它表示的范围的值时,结果是未定义的。

注:一段程序在不同的编译器下编译的结果可能不同,这种结果会导致程序不可移植,在开发过程中要避免程序依赖实现环境。例如,不同类型在不同机器或编译器上的尺寸不同,此时,在程序中就不可以假定该类型的定长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值