### 2.1 整型
**作用**:整型变量表示的是==整数类型==的数据
C++中能够表示整型的类型有以下几种方式,**区别在于所占内存空间不同**:
| **数据类型** | **占用空间** | 取值范围 |
| ------------------- | ----------------------------------------------- | ---------------- |
| short(短整型) | 2字节 | (-2^15 ~ 2^15-1) |
| int(整型) | 4字节 | (-2^31 ~ 2^31-1) |
| long(长整形) | Windows为4字节,Linux为4字节(32位),8字节(64位) | (-2^31 ~ 2^31-1) |
| long long(长长整形) | 8字节 | (-2^63 ~ 2^63-1) |
### 2.2 sizeof关键字
**作用:**利用sizeof关键字可以==统计数据类型所占内存大小==
**语法:** `sizeof( 数据类型 / 变量)`
**示例:**
```C++
int main() {
cout << "short 类型所占内存空间为: " << sizeof(short) << endl;
cout << "int 类型所占内存空间为: " << sizeof(int) << endl;
cout << "long 类型所占内存空间为: " << sizeof(long) << endl;
cout << "long long 类型所占内存空间为: " << sizeof(long long) << endl;
system("pause");
return 0;
}
### 2.3 实型(浮点型)
**作用**:用于==表示小数==
浮点型变量分为两种:
1. 单精度float
2. 双精度double
两者的**区别**在于表示的有效数字范围不同。
| **数据类型** | **占用空间** | **有效数字范围** |
| ------------ | ------------ | ---------------- |
| float | 4字节 | 7位有效数字 |
| double | 8字节 | 15~16位有效数字 |
**示例:**
默认情况下,输出一个小数,会显示出6位有效数字
int main() {
float f1 = 3.14f;
double d1 = 3.14;
cout << f1 << endl;
cout << d1<< endl;
cout << "float sizeof = " << sizeof(f1) << endl;
cout << "double sizeof = " << sizeof(d1) << endl;
//科学计数法
float f2 = 3e2; // 3 * 10 ^ 2
cout << "f2 = " << f2 << endl;
float f3 = 3e-2; // 3 * 0.1 ^ 2
cout << "f3 = " << f3 << endl;
system("pause");
return 0;
}
### 2.4 字符型
- C和C++中字符型变量只占用==1个字节==。
- 字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元
常用字符型变量对应ASCII编码:a-97,A-65
ASCII 码大致由以下**两部分组**成:
* ASCII 非打印控制字符: ASCII 表上的数字 **0-31** 分配给了控制字符,用于控制像打印机等一些外围设备。
* ASCII 打印字符:数字 **32-126** 分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。
### 2.5 转义字符
**作用:**用于表示一些==不能显示出来的ASCII字符==
"\n"
"\\"输出一个\
"\t"水平制表
### 2.6 字符串型
**C风格字符串**: `char 变量名[] = "字符串值"`
**C++风格字符串**: `string 变量名 = "字符串值"`
> 注意:C++风格字符串,需要加入头文件#include<string>
### 2.7 布尔类型 bool
**作用:**布尔数据类型代表真或假的值
bool类型只有两个值:
* true --- 真(本质是1)
* false --- 假(本质是0)
**bool类型占1个字节大小**只要非0的值都代表真
### 2.8 数据的输入
#### 4.1.2 三目运算符
**作用:** 通过三目运算符实现简单的判断
**语法:**`表达式1 ? 表达式2 :表达式3`
**解释:**
如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
如果表达式1的值为假,执行表达式3,并返回表达式3的结果。
###if和switch区别?
switch缺点:判断只能是整型或者字符型,不可以是一个区间
switch优点:结构清晰,执行效率高
注意:case里如果没有break,那么程序会一直向下执行
###do...while和while区别?
do...while会先执行一次循环