From affcc96aa6ff7d3181f90c35cb50198077d2bb9b Mon Sep 17 00:00:00 2001 From: Ir1d Date: Sun, 4 Aug 2019 20:09:48 +0800 Subject: [PATCH] update variable --- docs/lang/variable.md | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/docs/lang/variable.md b/docs/lang/variable.md index 8b137891..0b07277f 100644 --- a/docs/lang/variable.md +++ b/docs/lang/variable.md @@ -1 +1,78 @@ +## 数据类型 + +C++ 内置了七种基本数据类型: + +| 类型 | 关键字 | +| -- | -- | +| 布尔型 | bool| +| 字符型 | char| +| 整型 | int| +| 浮点型 | float| +| 双浮点型 | double| +| 无类型 | void| +| 宽字符型 | wchar_t| + +一些基本类型可以使用一个或多个类型修饰符进行修饰:`signed`,`unsigned`,`short`,`long` + +| 类型 | 关键字 | 范围 | +| -- | -- | -- | +| char |1 个字节 | -127 到 127 或者 0 到 255 | +| int |4 个字节 |-2147483648 到 2147483647($2^{32} - 1$) | +| float | 4 个字节 | $-3.4*10^{38}$ 到 $+3.4*10^{38}$ | +| double | 8 个字节 | $-1.7*10^{-308}$ 到 $1.7*10^{308}$ | + +## 声明变量 + +使用关键词加上变量名即可声明。 + +```c++ +int oi; +double wiki; +char org = 'c'; +``` + +声明时没有初始化值的全局变量会被初始化为 0。而局部变量没有这种特性。 + +## 变量作用域 + +作用域是变量可以发挥作用的代码块。 + +变量分为全局变量和局部变量。 +在所有函数外部声明的变量,称为全局变量。 +在函数或一个代码块内部声明的变量,称为局部变量。 + + +全局变量的作用域是整个文件,全局变量一旦声明,在整个程序中都是可用的。 + +局部变量的作用域是声明语句所在的代码段,局部变量只能被函数内部或者代码块内部的语句使用。 + +由一对大括号括起来的若干语句构成一个代码段。 + + +```c++ +int g = 20; // 声明全局变量 +int main () { + int g = 10; // 声明局部变量 + printf("%d\n", g); // 输出 g + return 0; +} +``` + +在一个代码块中,局部变量会覆盖掉同名的全局变量,比如上面的代码输出的 g 就是 10 而不是 20 + + +## 常量 + +常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。 + +常量的值在定义后不能被修改。声明时加一个 `const` 关键字即可。 + +```c++ +const int a = 2; +a = 3; +``` + +如果修改了常量的值,在编译环节就会报错: `error: assignment of read-only variable ‘a’` + +注:一个指针型常量指向的地址不能被修改,但是指向的地址处存储的值可以被修改。 -- 2.11.0