3.1

3.1 简单变量

变量名

以下划线开头或大写字母开头的变量名保留给编译器及其使用的资源。
使用_time, _Donut 不会导致编译器错误, 但会导致行为的不确定性
长度不限

整型

char
short 至少16位
int 至少与short一样长
long 至少32位, 至少与int一样长
long long 至少64位, 至少与long一样长 // C++ 11
包含了整形限制的信息

运算符sizeof和头文件limits

中定义了符号常量来表示类型的限制
简单介绍 #define 和 const
如果需要与C兼容, 必须使用 #define

初始化

初始化:将声明与赋值结合到一起
int n_int = INT_MAX; // 来自C
C++
int owls = 101;
int wrens(432);
C++11的初始化方式
int a = {24};
int b{32};
int c{}; // 初始化为0
int d = {}; // 初始化为0
// 大括号初始化器可以用于任何类型

无符号类型

每种整形都有一种无符号类型
unsigned char
unsigned short
unsigned int // 缩写 unsigned
unsigned long
unsigned long long

选择整型类型

整型字面值

C++使用前一(两)位标识数字常量的基数(进制)
第一位:1~9 10
第一位:0, 第二位:1~7 8
前两位:0X/0x 16
正常情况下, cout 以十进制格式输出
计算机内部储存形式都为二进制
控制 cout 以不同形式的进制输出
dec hex oct // 实际上是一条消息, 告诉 cout 采取何种行动, 命名空间 std
cout << hex;
cout << dec;
cout << oct;

确定常量的类型

除非有特别的理由(后缀或存不下), 否则常量将被储存为 int 类型
后缀:
l/L : long
u/U : unsigned int
ul/UL : unsigned long
C++11 : ull Ull uLL ULL
不带后缀
十进制数
int long long long // 用能存放的最小类型表示
十六进制/八进制
int unsigned int long / unsigned long long long / unsigned long long // 用能存放的最小类型表示

char 类型:字符和小整数

成员函数cout.put()

ostream.put(); // 显示单个字符

char字面值

转义序列
\a : 终端扬声器振铃
可以基于字符的八进制和十六进制编码来使用转义序列
Ctrl + Z 26 '\032' '\x1a'

通用字符名

源字符集:可以用来编写源代码的字符集
执行字符集:包括在程序执行期间可以处理的字符(文件读取、显示到屏幕上的字符)
基本源字符集、基本执行字符集
扩展源字符集、扩展执行字符集
通用字符名的用法
以\u或\U打头
\u 后面是8个十六进制位
\U 后面是16个十六进制位
这些位表示的是ISO 10646的编码, Unicode 与 ISO10646
如果支持扩展字符集, 就可以使用通用字符名
int k\u00F6rper;
cout << "Let them eat g\u00F6rper"

signed char 和 unsigned char

char // 表示的可能是 unsigned char 也可能是 signed char
使用 char 存储 ASCII 字符, 有没有符号都没有关系

wchar_t

底层类型
当基本字符集为较大的字符集时, char 可以被厂商设置为16位或更长
当基本字符集较小, 扩展字符集较大时, char 可以表示基本字符集, wchar_t 表示扩展字符集, wchar_t 足够长表示扩展字符集
wcin
wcout
前缀L表示宽字符常量和宽字符串

C++11扩展

底层类型
char16_t : u 通用字符名\u
char32_t : U 通用字符名\U

bool类型

bool 只有 true 和 false
任何数字值或指针值都可以被隐式转换位bool, 无须强行转换