第2章 变量和基本类型

来源:互联网 发布:mac病毒 编辑:程序博客网 时间:2024/04/29 08:06

这章要学会的:

2.1 基本内置类型

2.2 字面值常量

2.3 变量

2.4 const限定符

2.5 引用

2.6 typedef 名字

2.7 枚举

2.8 类类型

类型告诉我数据代表什么意思以及可以对数据执行哪些操作.类型确定了数据和操作在程序中的意义。C++提供了通过组合现有类产生新类的方法。

2.1 基本内置类型

C++有9种数据类型:

bool

char

wchar_t

short

int

long

float

double

long double

C++包含C89部分,所以有够低的层操作硬件,C++的内置类型与其在计算机的硬件存储器中的表示方式紧密相关。

在位这一级上,存储器是没有结构和意义的。让存储数据有结构的最基本的方法是用块(chunk)处理存储。大多数计算机将存储器中的每一个字节和一个称为地址的数据关联起来。可以用地址表示从该地址开始的任何几个不同大小的位集合。

因为C++是"强类型"的[类型优先,类型决定大多数东西],就像你是什么样的人,就应该采用什么方式跟你沟通一样。所以程序中任何变量(或函数)必须有“先说明后使用”.定义类型意义至少有两个方面:决定它在内存中的怎么组织的,及可对这个东西怎么合法操作,有点像离散数学中的“运算系统”。

一般,short 类型为半个机器字长,

            int 类型为一个机器字长,

            long类型为一个或两个机器字长;

bool 类型表示真值 true, false.

char 类型有 三种 不同的类型:普通char, unsigned char 和 signed char,虽然char 有三种不同类型,但只有两种表示方式。可以使用 unsigned char 或 signed char 表示 char 类型。使用哪种 char 表示方式由编译器而定.

整型的表示: 无符号型中所有位都表示数值。C++标准没定义 signed 如何用位来表示,而是每个编译器决定。如果把一个超出范围的值赋给一个指定类型的对象时,1>对于unsigned来说,编译器必须调整越界值使其满足要求(将该值对unsigned类型取值数求模).把负值赋给 unsigned对象也是完全合法的,其结果是该负数对该类型的取值个数求模后的值。

浮点型: 这里的类型是指要的值被CPU的控制器从CPU的浮点寄存器(一个80位的[X86])中取出按IEEE754的标准存储到内存中的形式,有long double, double, float.

标准库定义了一组类型用于统计对象的大小。因此,当计数这些元素时使用标准库定义的类型总是正确的,其它情况下,使用unsigned类型比较明智,可以避免值越界导致结果为负的可能性。

2.2 字面值常量(literal constant)

称之为字面值是因为只能用它的值称呼它,称之为常量是因为它的值不能修改。只有内置类型存在字面值,没有类类型的字面值。

字面值的几种情况:

1。整型字面值

可以使用10,8,16进制,这些进制不会改变其二进制表示形式。 eg:  1L ,2U

2。浮点字面值

可以用十进制或科学记数法来表示浮点字面值常量。eg: 3.14159F, .001f, 1E-3F, 1.2345E1L

3。布尔字面值

true,false是bool型的字面值

4。字符字面值

char,或 wchar_t类型的值.

5。非打印字符的转义序列

6。字符串字面值

为了兼容C语言,C++中所有的字符串字面值都由编译器自动在末尾加一个空字符.如果是宽字符串就以宽空字符结束。如果连接字符串字面值和宽字符串字面值,其结果是未定义.

对象是内存中具有类型的区域,说得更具体一些,计算左值表达式就会产生对象。