C++变量、限定符

C++算数类型变量

类型 含义 最小尺寸
bool 布尔类型 未定义
char 字符 8位
wchar_t 宽字符 16位
char16_t Unicode字符 16位
char32_t Unicode字符 32位
short 短整型 16 位
int 整形 16 位
long 长整型 32位
long long 长整型 64位
float 单精度浮点型 6位有效数字
double 双精度浮点型 10位有效数字
long double 拓展精度浮点数 10位有效数字

​ 除去布尔型和拓展的字符型之外,其他的整数可以划分为带符号的和无符号的,无符号的只能表示大于等于0的数。int、short、long、long long、都是带符号的,在前面加上unsigned就得到无符号类型。

选择类型时:

  • 知晓数值不可能为负时,选用无符号类型。
  • 使用int执行整形运算。如果int不够,选用long long,因为long和int一般有一样的尺寸。
  • 在算术表达式中不用使用char 和bool。
  • 执行浮点运算用double,别用float。因二者计算代价相差无几,甚至一些机器上double比float还快。

字面值常量

42,”like”, ‘k’,这些都是字面值常量。
可以指定字面值常量的类型:

1
2
3
4
L'a'    //宽字符型字面值,类型是wchat_t
u8"hi!" // utf-8字符串字面值,有8位编码一个Unicode字符
42ULL // 42是unsigned long long型
3.1415926L //long double 型

指定字面值类型

  • 字符和字符串字面值
前缀 含义 类型
u Unicode16字符 char16_t
U Unicode32字符 char32_t
L 宽字符 wchar_t
u8 UTF-8(仅用于字符串字面常量) char
  • 整数字面值
    后缀 最小匹配类型
    u / U unsigned
    l / L long
    ll / LL long long
  • 浮点型字面值
后缀 类型
f /F float
l / L long double

定义变量

  • 初始化:创建变量的同时赋予初值

  • 赋值:把对象当前值擦除,用新值代替

​ 变量若在创建时没有赋值,会被系统赋予一个默认值。默认值是什么有变量的类型决定,与定义变量的位置也有关。

变量的声明和定义

​ 程序可以分解为多个文件,分别独立编译,这样则需要有在文件间共享代码的方法。例如,一个文件中的代码可能需要使用另一个文件中定义的变量。一个实际的例子是std::cout,它定义于标准库,却能被我们写的程序使用。

​ 声明使得名字为程序所知,一个文件要想使用别的文件定义的变量,必须包含对这个变量名字的声明。而定义是负责创建与名字相关联的实体。

1
2
extern int i;       // 声明i
int j; //定义j

任何包含显式初始化的声明即成为定义。

1
extern double pi = 3.1415;       // 定义

变量只可以被定义一次,但可以被声明多次。

在函数体内部,如果试图初始化一个有extern关键字标记的变量,将引发错误。