首页 > 代码库 > 变量和基本类型

变量和基本类型

有哪些内置类型?如何关联类型和对象?

如何更改类型? 如何建立自定义类型?

一.内置类型

bool 布尔型 —— 可以将任何算数类型的任何值赋给bool对象,0值为false,其他非0值代表true

char 字符型 8

wchar_t 宽字符型 16

short 短整型 16   半个机器字长

int 整型 16   一个机器字长

long 长整型 32   1个或者2个机器字长

float 单精度浮点型 6位有效数字

double 双精度浮点型 10位有效数字

long double 扩展精度浮点型 10位有效数字

int|short|long默认为signed

1.整型的赋值

  当把一个超出取值范围的值赋给一个指定类型的对象时,对于unsigned类型来说,编译器必须调整越界值来使其满足要求。即对其取模之后的值。336--80

对于unsigned类型,赋予其负数是合法的,结果是该负数对该类型的取值个数求模后的值。-1--255

  对于signed类型,编译器决定实际赋的值,实际操作中跟以上类似。

2.浮点型

     float类型精度只能保证6位有效数字,double至少可以保证10位。(实际中使用double类型不会出错,而且计算代价不会太大)

二.字面值常量

1 只有内置类型有字面值,没有类类型的字面值。

2 。20  十进制, 024  八进制   0x14   十六进制

3.转义字符:

\n 换行符

\t 水平制表符

\v 纵向制表符

\b 退格符

\r 回车符

\f 进纸符

\a 报警(响铃)符

\\ 反斜杠

\? 疑问号

\‘ 单引号

\" 双引号

三。变量

1.变量的初始化:

int ival(1024);//直接初始化  更方便

int ival=1024;//复制初始化

每个内置类型的对象都要初始化。

类通过构造函数进行初始化。或者使用默认构造函数。

2.变量的声明

extern int  i;关键字    类型   对象名  不分配存储空间,可多次声明

四。const限定符

1.定义const对象:const  int  bufsize=512;

定义的时候必须初始化

2.const对象默认为文件的局部变量(extern的用法)

变量(默认为extern)定义在一个文件中,假设做了合适的声明,就可以在另外的文件中使用这个变量:

//file_1.cpp

int counter;

//file_2.cpp

extern int counter;//uses counster from file_1

++counter;

与其他变量不同,在全局作用域中声明的const变量是定义该对象的文件的局部变量,要使const变量能够在其它文件直接中被访问,必须显式的指定为extern:

file_1.cpp

extern const int bufSize=fcn();

file_2.cpp

extern const int bufSize;//uses bufSize from file_1

for(int index=0;index!=bufSize;++index)

{

...

}

五、引用(别名)

引用(通过在变量名前添加"&"定义)

引用就是对象的另一个名字.在实际程序中,引用主要用作函数的形式参数.

注意  const引用可以绑定到不同但是关联的类型的对象或者绑定到右值。

六、typedef

用来定义类型的同义词,即现有数据类型的同义词。

 typedef  double  wages

七、枚举

关键字    可选的枚举类型名    枚举成员

enum   open_modes    {input ,output,append};

默认第一个为0,后面每一个比前一个大一个。

可对成员赋值,但是不能改变枚举成员的值

八、类类型

class和struct都可以定义类,仅仅影响默认的初始访问级别:

class Sale_item { (private:)默认为private public: }

struct Sale_item { (public:)默认为public private: }

九、头文件

1.头文件用于声明不用于定义

 头文件包含在多个源文件中,不应该含有变量或者函数的定义。,但是可以定义类、值在编译时就确定的const对象和inline函数

2、一些const对象定义在头文件中。

当在头文件定义了const变量以后,每个包含该头文件的源文件都有了自己的const变量

3、预处理器

避免多重包含(预处理器变量)用全大写表示

#ifndef SALESITEM_H  //测试是否未定义,未定义则后面的执行,直到发现endif,相反则为假,endif之间的代码都不执行

#define SALESITEM_H

.....

.....

#endif