0
点赞
收藏
分享

微信扫一扫

1.2 C++变量与常变量、符号常量


1、C++基本数据类型

 

1.2 C++变量与常变量、符号常量_赋值

 

2、变量

(1)变量赋值

// 定义变量后,用赋值语句=赋初始值
int a;
a = 21;
cout<<"a is "<<a<<endl;

//在定义变量的同时,初始化
int b = 51;
cout<<"b is "<<b<<endl;

 

1.2 C++变量与常变量、符号常量_初始化_02

(2)变量不赋值,编译器会自动给其赋一个值,但是该值是无效的,无可用性

若强行使用,会报错 Run-Time Check Failure #3  运行时检查报错,是因为使用了未初始化的变量

//变量不赋值,编译器会自动给其赋一个值,但是该值是无效的,无可用性
int c;
cout<<"c is "<<c<<endl;
//若使用会报错 Run-Time Check Failure #3 - The variable 'c' is being used without being initialized.

1.2 C++变量与常变量、符号常量_编译器_03

 

3、常变量

(1)常变量具有变量的三个要素:数据类型、变量名、赋值。

(2)必须在定义时赋初值,且在程序的运行中值不可变。

(3)编译器可对常变量进行类型检查。

 

Test 1:

const int d = 8;
d = 10; //该操作会报错

1.2 C++变量与常变量、符号常量_编译器_04

 

Test 2:

const int d = 8;
//d = 10; //该操作会报错
int *p = (int*)&d; //取变量的地址并转换赋值给指向int的指针
*p = 9; //利用指针重新对变量d赋值
cout<<"the new num is "<<d<<endl;

1.2 C++变量与常变量、符号常量_初始化_05

从执行结果发现,d的值虽然被修改为9,但是输出的结果还是8

 

Test 3:

volatile: 不稳定的

volatile const int d = 8; 
//若不想被编译器察觉到对const的操作,可在前加上volatile关键字

int *p = (int*)&d; //取变量的地址并转换赋值给指向int的指针
*p = 9; //利用指针重新对变量d赋值
cout<<"the new num is "<<d<<endl;

1.2 C++变量与常变量、符号常量_初始化_06

 

4、符号常量

定义符号常量的好处:便于程序修改和维护。

但是这种形式的常量已经用的较少。原因是:用预处理指令定义常量不含类型信息,编译器只是会在编译前执行进行替换操作, 即使有人重新定义了常量值,编译器也不会发生警告。

const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在你内存中有若干个拷贝。

1.2 C++变量与常变量、符号常量_编译器_07

 

 

 

 

举报

相关推荐

0 条评论