前面说了C++的基本数据类型,下面来看看在C++中如何定义变量和常量。
变量
定义和初始化
C++定义变量的方式和C语言一样,也可以在定义的同时初始化。值得一提的是列表初始化,在原来的C++版本中可以用于初始化数组等。C++ 11标准增加了更广泛的列表初始化,所以可以用列表初始化来初始化单个变量。
//定义变量
int a;
//定义并初始化
int b = 1;
//同时定义多个变量
int c = 5, d = 6;
//C++ 11 新特性:列表初始化
int e{
3};
列表初始化有一个限制,如果要初始化的值超过了可容纳的范围,就会引发编译错误,而直接赋值就可以。
//不能编译
//short s{3.1415};
//可以编译
short s = 3.1415;
对于函数内部的局部变量来说,如果不初始化的话,值是未定义的。对于未初始化的局部变量进行操作可能导致无法预料的后果。对于全局变量,如果没有给定初始值,默认值是0。
定义和声明变量
变量定义告诉编译器,我要创建一个变量,以后再用它。而变量声明告诉编译器,我要引用一个变量,所以你先按照这个变量的类型和名字去找它。声明变量需要使用extern
关键字,而且声明的时候不能赋值。如果使用extern
关键字并赋值,那么变量声明就变成了变量定义,而且这只能用于全局变量的声明和定义。如果对一个函数内部的本地变量声明添加初始化式,就会引发编译错误。
//定义了一个全局变量
int global_count;
//声明在另一个文件中定义的全局变量
extern int global_count;
标识符
标识符也就是变量、函数、类的名字,用于标识不同的对象。和大多数编程语言一样,C++的标识符需要以字母或下划线开头,有数组、字母和下划线组成,而且对大小写敏感。
作用域
如果一个标识符定义在花括号外面,那么这个标识符的作用域就是全局作用域。全局作用域的变量可以在本文件的任何地方访问,如果在其他文件中声明这个标识符,那么还可以在其他文件中访问。
如果一个标