变量

数据类型

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

类型 关键字
布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void
类型 字节数 范围
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}

一些基本类型可以使用一个或多个类型修饰符进行修饰,例如 signedunsigned 修饰类型表示所修饰的数有没有符号, shortlong 表示类型的长短,即类型所能表示的范围。另外还有一些其他的修饰符例如 const ,可以用来描述一些更加复杂的东西,将会在下面讲解。

声明变量

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

int oi;
double wiki;
char org = 'c';

在目前我们所接触到的程序段中,声明在花括号包裹的地方的变量是局部变量,而声明在没有花括号包裹的地方的变量是全局变量。实际有例外,但是现在不必了解。

声明时没有初始化值的全局变量会被初始化为 0。而局部变量没有这种特性,需要手动赋初始值,否则可能引起难以发现的 bug。

变量作用域

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

变量分为全局变量和局部变量,意义已经在上面讲解。

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

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

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

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

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

常量

常量是固定值,在程序执行期间不会改变。

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

const int a = 2;
a = 3;

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


评论