C++ Primer Plus 预习(四) if else语句

if else语句

逻辑运算符

C++中有&&、||、! 三个逻辑运算符用来表示与、或、非。

  • &&
    1.&&可以理解为且、与。用&&连接的两个语句,只要有一句为false,那么整个语句都为false,反过来说,只有两个语句同时为true,那么整个语句才是true。比如定义变量 int x = 5, y = 7;,那么 x > 4 && y <= 9 表示 x 大于 4 且 y 小于等于 9,很明显这句语句为true。
    2.短路原则,还看上面的例子,如果写出这样一个语句:x == 4 && y++,当编译系统读到 x == 4 && 时已经知道:这是一句&&语句并且第一个子句已经为false,那么无论第二个子句是true还是false都不会改变整个语句为false的事实,那么编译系统就会自动跳过 y++的执行。
    3.在C++中,0表示false,任何非零数为true。例如1 && -3 为true,而 2 && 0 就为false

  • ||
    ||可以理解为或。用||连接的两个语句,只有两句都为false,整个语句才为false,否则语句就为true。继续用上面的例子,x > 6 || y > 6 表示x大于6或者y大于6,很明显这句话是true。

  • !
    !用来表示非。它的作用是把一条语句变成否定状态,本来是true变为false,本来是false就变为true。比如 2 && !1 这条语句为false,因为1为true,加了!就变成了false。
    逻辑运算符的优先级为! > && > ||,所以一条语句中先执行非运算,再执行与运算,最后执行或运算。
    与或非的优先级为 ! > && > ||,先执行非运算,再执行与运算,最后执行或运算。例如: 1 && 2 || 3 && !4 的执行顺序为:先非运算得到 1 && 2 || 3 && false,然后执行与运算得到 true || false ,最后执行与运算得到 true


if语句

if语句的格式是:

if(test-condition) //判断条件
{
    statement //语句块
}

表示当判断条件test-condition 为true的时候,就执行statement语句块,需要注意,if只对它后面紧跟的第一句语句有效,所以如果语句块超过一句时,要用大括号包围起来,看一个例子:

int x = 5;
if(x >= 5) //如果x大于等于5
{
    x++; //等价于 x = x + 1; 执行完x的值为6
    cout << x << endl;
}

if可以和多个else if语句并列,格式为:

if(test-condition1) //判断条件1
{
    statement1 //语句块1
}
else if(test-condition2) //判断条件2
{
    statement2 //语句块2
}
else if(test-condition2) //判断条件3
{
    statement3 //语句块3
}
....

当if的判断条件为false,依次往下执行,直到遇到判断条件为true或者没有成立的判断条件。
if还可以和else搭配,用法如下:

if(test-condition) //判断条件
{
    statement1 //语句块1
}
else
{
    statement2 //语句块2
}

当if的判断条件为false,执行else的语句块2。


if语句的综合应用

else if , else 可以同时和 if 使用,但不能单独使用,下面来看一个例题:输入成绩,100-90为优秀,89-80为良好,79-70为中等,其他所有情况视为无效成绩。同时,如果分数为100分,那么输出一句“满分!”。参考代码如下:

#include <iostream>
using namespace std;
int main()
{
    int grade;
    cin >> grade;

    if(grade <= 100 && grade >= 90)
    {
        cout << "优秀" << endl;
        if(grade == 100)
            cout << "满分!" <<endl;
    }
    else if(grade <= 89 && grade >= 80)
        cout << "良好" << endl;
    else if(grade <= 79 && grade >= 70)
        cout << "中等" << endl;
    else
        cout << "无效成绩" << endl;

    return 0;
} 

猜你喜欢

转载自blog.csdn.net/qq_37876210/article/details/82195033