1、C++基本数据类型
2、变量
(1)变量赋值
// 定义变量后,用赋值语句=赋初始值
int a;
a = 21;
cout<<"a is "<<a<<endl;
//在定义变量的同时,初始化
int b = 51;
cout<<"b is "<<b<<endl;
(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.
3、常变量
(1)常变量具有变量的三个要素:数据类型、变量名、赋值。
(2)必须在定义时赋初值,且在程序的运行中值不可变。
(3)编译器可对常变量进行类型检查。
Test 1:
const int d = 8;
d = 10; //该操作会报错
Test 2:
const int d = 8;
//d = 10; //该操作会报错
int *p = (int*)&d; //取变量的地址并转换赋值给指向int的指针
*p = 9; //利用指针重新对变量d赋值
cout<<"the new num is "<<d<<endl;
从执行结果发现,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;
4、符号常量
定义符号常量的好处:便于程序修改和维护。
但是这种形式的常量已经用的较少。原因是:用预处理指令定义常量不含类型信息,编译器只是会在编译前执行进行替换操作, 即使有人重新定义了常量值,编译器也不会发生警告。
const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在你内存中有若干个拷贝。