C++中使用嵌套 if 语句
经常需要检查一系列不同的条件,且很多条件依赖于前一个条件是否满足。为了满足这种需求,C++ 允许您对 if 语句进行嵌套。
嵌套 if 语句类似于下面这样:
if (expression1)
{DoSomething1;if(expression2)DoSomething2;elseDoSomethingElse2;
}
elseDoSomethingElse1;
假设有一个应用程序,用户可通过按 d 或 m 键,让应用程序执行除法或乘法运算。执行除法运算前,必须核实除数不为零。因此,除检查用户输入外,在用户要求程序执行除法运算时,还必须核实除数不为零。为此,可使用嵌套 if 语句,如以下的示例程序所示:
#include <iostream>
using namespace std;int main()
{cout << "Enter two numbers: " << endl;float num1 = 0, num2 = 0;cin >> num1;cin >> num2;cout << "Enter 'd' to divide, anything else to multiply: ";char userSelection = '\0';cin >> userSelection;if (userSelection == 'd'){cout << "You wish to divide!" << endl;if (num2 != 0)cout << num1 << " / " << num2 << " = " << num1 / num2 << endl;elsecout << "Division by zero is not allowed" << endl;}else{cout << "You wish to multiply!" << endl;cout << num1 << " x " << num2 << " = " << num1 * num2 << endl;}return 0;
}
输出:
Enter two numbers:
45
9
Enter 'd' to divide, anything else to multiply: m
You wish to multiply!
45 x 9 = 405
再次运行的输出:
Enter two numbers:
22
7
Enter 'd' to divide, anything else to multiply: d
You wish to divide!
22 / 7 = 3.14286
最后一次运行的输出:
Enter two numbers:
365
0
Enter 'd' to divide, anything else to multiply: d
You wish to divide!
Division by zero is not allowed
这是运行程序三次得到的输出,每次提供的输入都不同。正如您看到的,程序每次的执行路径都不同。相比于上一节的示例程序,这个程序有很多地方不同:
- 为了更好地处理小数,将输入存储到了 float 变量中,执行除法运算时这很重要。
- if 条件与程序清单 6.1 中不同,不再检查用户按的是否是 m 键,而在第 14 行使用了表达式
(userSelection == 'd')
,该表达式在用户输入字符 d 时为 true。如果用户输入了 d,则执行除法运算。 - 鉴于这个程序将两个数相除,且除数由用户输入,因此必须核实除数不为零。这是在第 17 行使用嵌套的 if 语句实现的。
需要根据多个条件执行不同任务时,嵌套 if 语句很有用,这个程序演示了这一点。
提示:
这里使用制表符(空白)对嵌套语句进行了缩进,这是可选的,但可极大地改善嵌套 if 语句的可读性。很多较新的 IDE 都会自动缩进代码。
该文章会更新,欢迎大家批评指正。
推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容
点击立即学习:C/C++后台高级服务器课程