====== 2 数据类型 ====== C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。 ===== 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( 数据类型 / 变量 )'' **示例**: 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; } **整型结论**: ''short < int <= long <= long long'' ===== 2.3 实型(浮点型) ===== **作用**:用于**表示小数**。 浮点型变量分为两种: - 单精度 float - 双精度 double 两者的**区别**在于表示的有效数字范围不同。 ^ 数据类型 ^ 占用空间 ^ 有效数字范围 ^ | float | 4字节 | 7位有效数字 | | double | 8字节 | 15~16位有效数字 | **示例**: int main() { float f1 = 3.14f; // 注意:如果不加f,编译器通常默认为double,加f显式声明为float 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 字符型 ===== **作用**:字符型变量用于显示单个字符。 **语法**: ''char ch = 'a';'' > **注意1**:在显示字符型变量时,用**单引号**将字符括起来,不要用双引号。 > **注意2**:单引号内只能有一个字符,不可以是字符串。 * C和C++中字符型变量只占用 **1个字节**。 * 字符型变量并不是把字符本身放到内存中存储,而是将对应的 **ASCII编码** 放入到存储单元。 **示例**: int main() { char ch = 'a'; cout << ch << endl; cout << sizeof(char) << endl; // ch = "abcde"; // 错误,不可以用双引号 // ch = 'abcde'; // 错误,单引号内只能引用一个字符 cout << (int)ch << endl; // 查看字符a对应的ASCII码 ch = 97; // 可以直接用ASCII给字符型变量赋值 cout << ch << endl; system("pause"); return 0; } ==== ASCII 码大致由以下两部分组成 ==== * **ASCII 非打印控制字符**:ASCII 表上的数字 **0-31** 分配给了控制字符,用于控制像打印机等一些外围设备。 * **ASCII 打印字符**:数字 **32-126** 分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。 ===== 2.5 转义字符 ===== **作用**:用于表示一些**不能显示出来的ASCII字符**。 现阶段我们常用的转义字符有: ''\n'' ''\\'' ''\t'' ^ 转义字符 ^ 含义 ^ ASCII码值(十进制) ^ | \a | 警报 | 007 | | \b | 退格(BS),将当前位置移到前一列 | 008 | | \f | 换页(FF),将当前位置移到下页开头 | 012 | | \n | 换行(LF),将当前位置移到下一行开头 | 010 | | \r | 回车(CR),将当前位置移到本行开头 | 013 | | \t | **水平制表(HT) (跳到下一个TAB位置)** | **009** | | \v | 垂直制表(VT) | 011 | | \\ | **代表一个反斜线字符"\"** | **092** | | ' | 代表一个单引号(撇号)字符 | 039 | | " | 代表一个双引号字符 | 034 | | \? | 代表一个问号 | 063 | | \0 | 数字0 | 000 | | \ddd | 8进制转义字符,d范围0~7 | 3位8进制 | | \xhh | 16进制转义字符,h范围0~9, a~f, A~F | 3位16进制 | **示例**: int main() { cout << "\\" << endl; cout << "\tHello" << endl; cout << "\n" << endl; system("pause"); return 0; } ===== 2.6 字符串型 ===== **作用**:用于表示一串字符。 **两种风格**: **1. C风格字符串**: ''char 变量名[] = "字符串值"'' **示例**: int main() { char str1[] = "hello world"; cout << str1 << endl; system("pause"); return 0; } > **注意**:C风格的字符串要用双引号括起来。 **2. C++风格字符串**: ''string 变量名 = "字符串值"'' **示例**: #include // 必须包含头文件 int main() { string str = "hello world"; cout << str << endl; system("pause"); return 0; } > **注意**:C++风格字符串,需要加入头文件 ''#include'' ===== 2.7 布尔类型 bool ===== **作用**:布尔数据类型代表真或假的值。 bool类型只有两个值: * ''true'' --- 真(本质是1) * ''false'' --- 假(本质是0) **bool类型占1个字节大小**。 **示例**: int main() { bool flag = true; cout << flag << endl; // 1 flag = false; cout << flag << endl; // 0 cout << "size of bool = " << sizeof(bool) << endl; // 1 system("pause"); return 0; } ===== 2.8 数据的输入 ===== **作用**:用于从键盘获取数据。 **关键字**: ''cin'' **语法**: ''cin >> 变量'' **示例**: int main(){ // 整型输入 int a = 0; cout << "请输入整型变量:" << endl; cin >> a; cout << a << endl; // 浮点型输入 double d = 0; cout << "请输入浮点型变量:" << endl; cin >> d; cout << d << endl; // 字符型输入 char ch = 0; cout << "请输入字符型变量:" << endl; cin >> ch; cout << ch << endl; // 字符串型输入 string str; cout << "请输入字符串型变量:" << endl; cin >> str; cout << str << endl; // 布尔类型输入 bool flag = true; cout << "请输入布尔型变量:" << endl; cin >> flag; // 输入非0值代表真,输入0代表假 cout << flag << endl; system("pause"); return EXIT_SUCCESS; }