变量保留的是它所存储的值的内存位置。这意味着,创建一个变量时,就会在内存中保留一些空间,根据存储的数据类型(字符型,宽字符型、整型、浮点型、双浮点型、布尔型等)的信息,操作系统会根据变量的数据类型来分配内存和决定在保留内存中存储什么。
基本的内置类型
C++提供了丰富的内置数据类型和用户自定义的数据类型,表中为7种C++基本数据类型
一些基本类型可用一个或者多个类型进行修饰
- signed
- unsigned
- short
- long
其中signed 和 unsigned不改变变量所占用的字节
C++ STL:numeric_limits
numeric_limits是函数,为模板类,例如numeric_limits<char>::max)()表示计算char变量代表的数值范围中的最大值。
由于不同平台机器上每个数据类型型的字节数和数值范围都不太一样,因此可以通过sizeof获得字节数,numeric_limits获得最大值和最小值。
使用前需要包含头文件<limits>,使用该模板类计算的到的变量数值范围如下
typedef声明
用来为已有的变量类型取一个新的名字,例如:
typedef int feet;
feet distance; //创建一个int型变量distance
枚举类型
枚举类型是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。如果一个变量只有几种可能的值,那么我们就可以将其定义为枚举类型。所谓“枚举”就是指将变量的值一一列出来,变量的值只能在列举出来的值的范围内。
创建枚举类型需要使用关键字enum,其一般形式为:
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
...
标识符[=整型常数]
}枚举变量;
如果枚举没有初始化,即省掉“=整型常数”时,则从第一个标识符开始自动给值为0。然后依次+1,如果中途有出现有初始化的,则按照初始化的值依次往后+1
定义枚举类型的主要目的是:增加程序的可读性。枚举类型最常见也最有意义的用处之一就是用来描述状态量
注:
- 枚举值必须是常量,程序中不能再为枚举元素赋值
- 枚举类型是代替#define
- 枚举类型的定义和变量的声明分开
enum Suit { Diamonds, Hearts, Clubs, Spades }; enum Suit a; enum Suit b,c;
变量a,b,c的类型都定义为枚举类型enum Suit
-
枚举类型定义与变量声明同时进行
enum Suit { Diamonds, Hearts, Clubs, Spades }a,b,c;
此处的类型名可以省略
enum { Diamonds, Hearts, Clubs, Spades }a,b,c;
但是类型名和变量名不能同时省略
-
枚举类型可以隐式地转换为int型,但是int型不能隐式地转换为枚举型
enum Suit{Dia, Hea, Clu, Spa}a; a = Dia; int n=110; n=a;
这样的写法没错,但是下面的写法就是错误的
-
枚举类型可以在main函数外定义
#include <iostream> using namespace std; enum Suit{Dia, Hea, Clu, Spa}; int main() { enum Suit a = Dia; int n=110; n=a; return 0; }