全局作用域:定义在所有花括号外的名字具有“全局作用域”
块作用域:在某个花括号内定义的名字具有“块作用域”
一般把具有全局作用域的变量叫做“全局变量”,具有块作用域的变量叫做“局部变量”
如果在嵌套作用域里出现重名,一般范围更小的局部变量会覆盖全局变量。如果要特意访问全局变量,需要加上双冒号:: ,指明是默认命名空间。
- #include
- using namespace std;
-
- // 全局作用域,全局变量
- int number = 0;
-
- int main()
- {
- // 块作用域,局部变量
- int number = 1;
-
- // 访问局部变量
- cout << "number = " << number << endl;
- // 访问全局变量
- cout << "number = " << ::number << endl;
-
- cin.get();
- }
定义方法:
- 方法1:
- #define ZERO 0
-
- 在文件头用 #define 来定义常量,也叫作“宏定义”。这种宏定义的方式是保留的C语言特性,在C++中一般不推荐。而且没有数据类型
-
-
- 方法2:
- const int Zero = 0;
-
- 常量定义后不能修改,定义时候必须赋值,不能先声明,在赋值如
- const int Zero
- Zero = 0

单引号是 char 字符类型, 双引号是 string 字符串类型,使用字符串要写#include
如想要定义单引号
- #include
- char a = '\''; #定义单引号字符
- string b = "abc";
注:
如果希望判断一个整型变量a是否在某个范围(0, 100)内,不能直接写:0 < a < 100;
由于小于运算符“<”满足左结合律,要先计算0 < a,得到一个布尔类型的结果,再跟后面的100进行比较。此时布尔类型做整数提升,不管值是真(1)还是假(0),都会满足 < 100 的判断,因此最终结果一定是true。
要想得到正确的结果,需要将两次关系判断拆开,写成逻辑与的关系。
- 判断一个整型变量a是否在某个范围(0, 100)内
- a = -1;
- 0 < a < 100; //错误写法 不论a取什么值,总是true
- 0 < a && a < 100; //正确写法 false