第2章 C++语言简单程序设计
2.1 Hello World
#include<iostream>
//使用标准命名空间,精准定位是iostream库文件下的引用
using namespace std;
//main函数程序的入口
int main() {
string hello = "Hello World";
cout << hello<< endl;//endl表示换行
return 0;//主函数正常结束,返回0
}
2.2 基本数据类型
基本类型数据的内存长度和数值范围
不同的数据类型规定了不同的机器数长度,决定了对应数据的数值范围,当一个整数超出此范围时计算机会将其转换为在数值范围内所允许的一个数,称为整型数据的溢出处理。
一般地,超过最大值的有符号整型数值会向上溢出变成负数,超过最小值的数据会向下溢出变成正数。
常用ASCII编码: 空格(32D)、数字0(48D)、大写A(65D)、小写a(97D)
① 在显示字符型变量时,用单引号将字符括起来,不要用双引号
② 单引号内只能有一个字符,不可以是字符串
③ 字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元
④ ASCII 非打印控制字符: ASCII 表上的数字 0-31 分配给了控制字符,用于控制像打印机等一些外围设备。
⑤ ASCII 打印字符:数字 32-126 分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。
⑥ 浮点型常量默认为double型。若在浮点数后面加一个字母f或F,则它是float型。
2.3 常量和标识符
① #define(宏常量):
#define 常量名 常量值② const(定义赋值后不可修改):
const 数据类型 常量名 = 常量值
#include<iostream>
using namespace std;
#define weekday 7
int main() {
const int month = 30;
// month = 100; 编译不通过,表达式必须是可修改的左值
cout << "one weekday have: " << weekday << endl;
cout << "one month have : " << month << endl;
return 0;
}
标识符命名规则
- ① 标识符不能是关键字
- ② 标识符只能由字母、数字、下划线组成
- ③ 第一个字符必须为字母或下划线
- ④ 标识符中字母区分大小写
建议:给标识符命名时,争取做到见名知意的效果,方便自己和他人的阅读
2.4 运算符和表达式
! > 算术运算符 > 关系运算符 > && > || > 赋值运算符 > 逗号运算符
sizeof运算符: 用于计算某种类型的对象在内存中所占的字节数。
- ① sizeof (类型名)
- ② sizeof 表达式
逗号运算符使用形式为: 表达式1,表达式2;求解顺序为先求解1,再求解2,最终结果为表达式2的值。
2.5 数据的输入与输出
cin用来处理标准输入;cout用来处理标准输出。
cin输入时,为了分隔多项数据,默认要求在键盘输入数据之间使用空格、Tab键、回车作为分隔符。
可以在输入输出流中使用控制符进行格式控制。使用这种方法,需要在程序中加入iomanip头文件。
| 操作符号 | 含义 |
|---|---|
| dec/hex/oct | 数值数据采用十进制/十六进制/八进制表示 |
| ws | 提取空白符 |
| endl | 插入换行符,并刷新流 |
| ends | 插入空白符 |
| setprecision(int) | 设置浮点数的小数位数(包括小数点) |
| setw(int) | 设置域宽 |
2.6 程序流程结构
选择结构
| if语句: |
|---|
if(条件){ 条件满足执行的语句 }else if....else{} |
| 三目运算符: |
表达式1 ? 表达式2 :表达式3 |
| switch语句: |
| switch(表达式) { case 常量表达式1:执行语句1; break; default: 执行语句2; break; } |
① switch语句后面的表达式可以是整型、字符型、枚举型。
② 每个常量表达式的值不能相同,但次序不影响执行结果。
③ 每个case分支可以有多条语句,但不必用{}
④ 每个case语句只是一个人口标号,并不能确定执行的终止点,因此每个case分支最后应该加break语句。
循环结构
while循环: while(循环条件){ 循环语句 }
do while循环:do{ 循环语句 } while(循环条件);
for循环:for(起始表达式;条件表达式;末尾循环体) { 循环语句; }
① for ( ; ; )语句 //相当于while (true)语句
② 初始语句、表达式1、表达式,都可以省略,分号不能省略。
跳转语句
| break语句:跳出当前的循环语句 |
|---|
| continue语句:跳过本次循环,继续执行下一次循环 |
go to语句:可以无条件跳转语句;goto 标记;如果标记存在,会跳转到标记的位置 |
① 标记放在语句最前面,并用(:)与语句分开
2.7 类型别名与类型判断
| 格式 | 含义 | |
|---|---|---|
| typedef | typedef 已有类型名 新类型名 | 传统的方法是使用关键字typedef,将一个标识符声明成某个数据类型的别名,然后将这个标识符当作数据类型使用。 |
| using | using 新类型名=已有类型名 | 其作用是把等号左侧的名字规定成等号右侧类型的别名。 |
| auto | auto val = val1+val2 | val的类型取决于表达式vall+val2的类型,如果 vall和 val2均是int类型,那么val将是 int类型;如果vall和 val2均是double类型,那么val将变成是double类型。 |
| decltype | decltype(i) j=2; | 表示j以2作为初始值,类型与i一致。 |