变量

数据类型

C++ 内置了六种基本数据类型:

类型 关键字
布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void

一些基本类型可以使用一个或多个类型修饰符进行修饰: signedunsignedshortlong

类型 字节数 范围
char 1 个字节 -128 到 127 或者 0 到 255
int 4 个字节 -2147483648 到 2147483647( 2^{31} - 1 )
float 4 个字节 -3.4\times 10^{38}3.4\times 10^{38}
double 8 个字节 -1.7\times 10^{-308}1.7\times 10^{308}

声明变量

使用关键词加上变量名即可声明。

1
2
3
int oi;
double wiki;
char org = 'c';

声明时没有初始化值的全局变量会被初始化为 0。而局部变量没有这种特性,需要手动赋初始值。

变量作用域

作用域是变量可以发挥作用的代码块。

变量分为全局变量和局部变量。 在所有函数外部声明的变量,称为全局变量。 在函数或一个代码块内部声明的变量,称为局部变量。

全局变量的作用域是整个文件,全局变量一旦声明,在整个程序中都是可用的。

局部变量的作用域是声明语句所在的代码块,局部变量只能被函数内部或者代码块内部的语句使用。

由一对大括号括起来的若干语句构成一个代码块。

1
2
3
4
5
6
int g = 20;  // 声明全局变量
int main() {
  int g = 10;         // 声明局部变量
  printf("%d\n", g);  // 输出 g
  return 0;
}

在一个代码块中,局部变量会覆盖掉同名的全局变量,比如上面的代码输出的 g 就是 10 而不是 20。为了防止出现意料之外的错误,请尽量避免局部变量与全局变量重名的情况。

常量

常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。

常量的值在定义后不能被修改。声明时加一个 const 关键字即可。

1
2
const int a = 2;
a = 3;

如果修改了常量的值,在编译环节就会报错: error: assignment of read-only variable‘a’


评论