C++变量与基本类型
---学习笔记
一、 从键盘输入文件结束符
Windows系统:control+Z;
Unix、OS-X、Mac:control+D;
二、 基本内置类型
算数类型表
类型 | 含义 | 最小存储空间 | 取值范围 |
bool | 布尔型 | - |
|
char | 字符型 | 8位 | -2^7 ~ 2^7-1 |
wchar_t | 宽字符型 | 16位 |
|
short | 短整型 | 16位 | -2^15 ~ 2^15-1 |
int | 整型 | 16位 | -2^31 ~ 2^31-1 |
long | 长整型 | 32位 | -2^31 ~ 2^31-1 |
float | 单精度浮点数 | 6位有效数字 | +/- 3.40282e+038 |
double | 双精度浮点数 | 10位有效数字 | +/- 1.79769e+308 |
long double | 扩双精度浮点数 | 10位有效数字 | +/- 1.79769e+308 |
整数型:
Short、int、long:
Short类型表示半个机器字(word)长,int类型表示一个机器字长,而long类型为一个或两个机器字长(在32位机器中,int类型和long类型通常字长是相同的)。
三、 字面值常量
1、字面值规则
以0(零)开头的字面值整数产量表示八进制;
以0x或0X开头的表示十六进制;
通过在数值后面加L或l指定常量为long类型;
通过在数值后面加U或u指定常量为unsigned类型;
通过在数值后面加F或f指定常量为float类型;
使用科学计数法时,指数用E或e表示;
默认的浮点字面值常量位double类型;
在字符字面值前面加L就能得到wchar_t类型的宽字符字面值;如:L’a’;
注意:以上提倡用大写,小写容易引起混淆;
2、多行字面值:
连接多行字面值的方法:在一行的末尾加反斜线符号(”\”),可将此行和下一行当作同一行处理。
四、 变量
1、初始化:直接初始化,复制初始化
int ival(1024);//直接初始化
int ival(1024);//复制初始化
注意:“初始化不是赋值”。
初始化:指创建变量,并给它赋予初始值;
赋值:指擦除对象的当前值,并用新值代替;
2、声明和定义
定义:用于为变量分配存储空间,还为变量在hiding初始值。在一个程序中,变量有且仅有一个定义。
声明:用于向程序表明变量的类型和名字。定义也是声明:当定义变量时我们声明了它的类型和名字。可以通过使用extern关键字来声明变量名而不定义它。
Extern声明不是定义,也不分配存储空间。事实上,它只是说明变量在程序的其他地方。程序中的变量可以声明多次,但只能定义一次。
注:只有当声明也是定义时,声明才可以有初始化式,因为只有定义才能分配空间。初始化式必须要有存储空间来进行初始化。如果声明有初始化式,那么它可以当作是定义,即使声明中标记为extern。
五、 const限定符
1、定义const对象
定义格式:const int bufsize=10;
2、const对象默认为文件的局部变量
与其他变量不同,除非特别说明,在全局作用域声明的const变量是定义该对象的文件的局部变量。此变量只存在于那个文件中,不能被其他文件访问。
通过指定const变量为extern就可以在整个程序中访问const对象。
例:
//file_1.cpp
externconst int bufSize =fun();
//file_2.cpp
externconst int bufSize;
//usebufSize
for(intindex=0; index!=bufSize; ++index)
…
六、 引用
1、引用的格式:int i;
int &m=i;
其中:引用名类型必须与原对象的类型相同。
2、引用是别名:因为引用只是绑定的对象的另一名字,作用在引用上的所有操作事实上都是作用在该引用绑定的对象上。
3、const对象的引用必须为const;
4、const可以引用非const对象;
七、typedef名字
typedef用来定义类型的同义词
如:
typedef int num;
num value;//定义value为int类型
八、枚举(enum)
1、定义枚举和初始化枚举
enum openModes {input,output,append};
注:默认的,第一个枚举成员赋值为0,后面每个枚举成员附的值比前面的值大1;
2、枚举成员是常量
给枚举常量赋值,例:
//shape is 1,sphere is 2,cylinder is 3,polygon is 4
enum Forms {shape=1,sphere,cylinder,polygon};
在枚举类型Forms中,显示的将shape赋值为1,其他成员隐式初始化。
枚举成员值可以不是唯一的,如:
//x=2,y=3,m=3,n=4
enum Point{x=2,y,m=3,z};
3、每个enum都定义一种唯一的类型
Point x=shape;
或x=shape;
x=1;//非法,即使3与相应的枚举成员关联