首页 > 编程笔记 > C++笔记 阅读:72

C++ if else语句的用法(非常详细)

在现实世界中,我们总是用“如果……那么……”的句式来表达条件选择。对应地,C++ 也提供了 if(如果)关键字来实现类似的条件选择结构,其语法格式如下:
if(条件表达式)
{
    语句1;
}
else
{
    语句2;
}
在执行 if 语句时,C++ 首先会计算条件表达式的值,然后根据其结果选择执行不同的代码分支。如果条件表达式的值为 true,那么执行语句 1;否则,进入 else 分支执行语句 2。

通过使用条件选择语句,可根据条件表达式的不同值改变程序的执行路径,在语句 1 和语句 2 中实现不同的功能,从而达到“根据不同的条件执行不同的动作”的目的。

if 语句的执行过程如下图所示。

图 1 条件选择结构的执行流程

现在,使用 if 语句来解决上述“四级考试过了没有”的问题:
// 定义保存考试成绩的变量
int nScore = 0;
cout << "请输入你的考试成绩: ";
// 输入考试成绩
cin >> nScore;
// 对条件表达式进行计算,判断考试成绩是否符合条件(大于或等于 60)
// 如果 nScore 的值大于或等于 60,则符合条件
// 若条件表达式 “nScore >= 60” 的值为 true
// 则直接进入 if 分支执行,输出考试通过的提示
if (nScore >= 60)
{
    // 执行符合条件的动作
    cout << "恭喜你,你通过了这次考试" << endl;
}
else // 如果不符合条件,条件表达式的值为 false,则进入 else 分支执行
{
    // 执行不符合条件的动作
    cout << "很遗憾,你没有通过这次考试" << endl;
}
在这里,首先让用户输入考试成绩,然后在 if 语句的条件表达式nScore >= 60中,将其与一个标准值进行比较,即判断考试成绩是否符合条件。如果考试成绩大于或等于 60,则条件表达式的值为 true,这意味着符合条件,程序会进入 if 分支执行,输出考试通过的提示语。反之,如果考试成绩小于 60,条件不满足,则条件表达式的值为 false,程序进入 else 分支执行,输出考试没有通过的提示语。这样,程序根据不同的条件(nScore 是否大于或等于 60)做出了不同的动作(输出不同的提示语)。

C++ if else使用注意事项

if 语句的形式虽然简单,但在使用上有如下几个需要注意的地方。

1) 如果没有必要, if语句中的else分支可以省略

很多时候,我们只关心条件为 true 的情况,只对符合条件的情况进行处理,这时可以省略 else 分支,仅保留 if 对条件表达式进行判断以及其后的语句 1 对符合条件的情况进行处理。

例如,我们只对通过考试的人进行提示,而对于没有通过考试的人,则直接忽略。用 if 语句表达出来就是:
// 省略 else 分支,只对符合条件的情况进行处理
if (nScore >= 60)
    cout << "恭喜你,你通过了这次考试" << endl;

2) if语句可以嵌套以表达多层次的条件判断

在一个 if 语句中可以嵌套另一个 if 语句,表示在某个前提条件下进行进一步的条件判断,从而表达多层次的条件判断。

例如,要比较输入的 v1 和 v2 两个数的大小关系,我们需要先判断两者是否相等,在不相等的前提下,再继续判断两者之间的大小关系,用嵌套的 if 语句表达如下:
cout << "请输入两个整数:" << endl;
int v1, v2;
// 获取用户输入的数字
cin >> v1 >> v2;
if (v1 != v2) // 判断 v1 和 v2 是否相等,如果不相等,则继续判断大小
{
    // 第二级 if 语句
    // 如果不相等,则继续判断 v1 是否大于 v2
    if (v1 > v2) // 大于
    {
        cout << "v1 > v2" << endl;
    }
    else // 小于
    {
        cout << "v1 < v2" << endl;
    }
}
else // v1 和 v2 相等
{
    cout << "v1 == v2" << endl;
}
在这段代码中,首先判断 v1 和 v2 是否相等。如果满足“不相等”这个前提条件,则继续判断 v1 是否大于 v2。通过这两层判断,就可以准确地得到 v1 和 v2 的大小关系。

3) if语句可以并列

如果同一层次的条件有多种情况可以使用并列的条件选择语句来实现。其语法格式如下:
if (条件表达式1)
{
    语句1;
}
else if (条件表达式2)
{
    语句2;
}
// ...
else if (条件表达式n)
{
    语句n;
}
else
{
    语句n+1;
}

例如,前面用嵌套的 if 语句实现的比较 v1 和 v2 的大小,实际上是三种相互并列的情况:要么是大于,要么是小于,要么是等于。因此,同样可以用并列的条件结构来实现:
if (v1 > v2) // 首先判断 v1 是否大于 v2
{
    cout << "v1 > v2" << endl;
}
else if (v1 < v2) // 如果第一个条件不满足,再判断 v1 是否小于 v2
{
    cout << "v1 < v2" << endl;
}
else // 如果 v1 既不大于 v2,也不小于 v2,那就必然是等于 v2
{
    cout << "v1 == v2" << endl;
}
这里需要注意的是,并列条件语句在执行时,会逐个依次计算其中各个并列的条件表达式,直到某个条件表达式为 true,然后进入其分支执行并结束整个语句。

因此,我们总是把条件满足概率比较高的条件判断放在比较靠前的位置,希望 if 语句一开始就遇到满足条件的分支,以避免对那些不易满足的条件判断的无用计算。

另外,并列条件选择语句只会执行其中的某一个分支。如果多个条件表达式都为 true,则只会执行从上到下遇到的第一个条件表达式为 true 的分支。例如:
int nScore = 85;
if (nScore >= 60) // 第一个条件表达式为 true,进入执行并直接结束整个语句
{
    cout << "恭喜你,你通过了这次考试" << endl;
}
// 因为第一个分支已经执行并结束了整个语句
// 所以即使第二个条件表达式为 true,也不会被执行
else if (nScore >= 85)
{
    cout << "厉害,你的成绩是优秀" << endl;
}
因此,在使用并列条件选择语句时,应避免条件范围的相互重复覆盖,不要让多个条件表达式同时为 true,以免造成程序逻辑上的混乱。

相关文章