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 | L'a' //宽字符型字面值,类型是wchat_t |
指定字面值类型
- 字符和字符串字面值
前缀 | 含义 | 类型 |
---|---|---|
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 | extern int i; // 声明i |
任何包含显式初始化的声明即成为定义。
1 | extern double pi = 3.1415; // 定义 |
变量只可以被定义一次,但可以被声明多次。
在函数体内部,如果试图初始化一个有extern关键字标记的变量,将引发错误。