一、字节与比特的关系。
计算机使用比特序列存储数据,每个bit值为0或1。
可寻址的最小内存块称为字节,计算机将内存中每个字节与一个数字(地址)关联起来。
单位换算:
1Byte (B)字节 = 8 bit 位 //一个字节由8比特构成
1 KB =1024 B
1MB= 1024KB
1GB=1024MB
二、数据类型
可以使用地址来表示从这个地址开始的大小不同的比特串。地址确定了数据存放的起始位置;数据类型决定了将接下来多少比特数作为一个整体解释成数据。
例如定义int ival=3; int *p=&ival; 则将地址p之后的16位比特解释成一个int类型的量。
void* 指针是特殊类型的指针,可用于存放任意对象的地址。但无法确定该地址是什么类型的对象。即仅表示内存空间中的某个地址,无法访问该地址实际存储的对象。
数据类型与bit数
数据类型 | 比特数 | 数值范围 |
char ( 一个char空间应确保可存放机器基本字符集中任意字符对应的数字值,一个字符char的大小等于一个机器字节) |
8bit |
|
int8_t |
8bit |
|
int16_t |
16bit |
|
int64_t |
64bit |
|
int |
32bit |
-2147483648 ~ 2147483647 |
long long | 64bit | |
float | 32bit | |
double | 64bit |
unsigned int 通常缩写为unsigned
三、变量
对象可广义地指一块能存储数据并具有某种类型的内存空间。例如类的对象。
变量:一个具名的、可供程序操作的存储空间。(命了名的对象叫做变量)。
变量的声明规定了变量的类型和名字;变量的定义规定变量的类型和名字,并负责创建与名字关联的实体,即申请存储空间,也可能为变量赋初始值。
int x=5; 定义了变量x,其类型为int,并申请了存储空间,初始化为5。
四、变量初始化
可以使用字面量\字面值初始化变量,或者为变量赋值。
Literal (A letter or symbol that stands for itself as opposed to a feature, function, or entity associated with it in a programming language),即字面量。
PS: C++ primer中文版中给了literal一个非常糟糕的翻译——字面值常量,这个翻译非常容易引起误解:使用常量初始化变量,或者将一个常量赋值给一个变量,这是怎么理解? 其实没有所谓的“常量”的概念,其实就是字面量。
int a = 9; //a是变量,9是字面量
string b = "Hello" //Hello是字面量
字面值的形式和值决定了它的数据类型。
十进制字面值的类型是int, long, long long中能容纳其值的最小的一个。
0x或0X开头 : 16进制,每位使用0~9、A~F表示
0开头:8进制
8进制和16进制字面值的类型是能容纳其数值的int, unsigned int, long, unsinged long, long long, unsigned long long中尺寸最小的。
字符和字符串字面值添加前缀、整形和浮点型字面值添加后缀可改变默认类型。例如:
3.14L , 类型为long double
L'a', 类型为wchar_t.