C++程序设计与案例分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.10 逻辑运算符和逻辑表达式

1. 逻辑运算符

C++语言中提供3种逻辑运算符:逻辑非(!),逻辑与(&&),逻辑或(||)。“!”是一元运算符,结合性是自右向左;“&&”和“||”是二元运算符,并且在书写的时候中间不能有空格,结合性是自左向右。“!”的优先级高于“&&”,而“&&”的优先级高于“||”,与其他运算符的优先级关系如图2-2所示。

图2-2 优先级

2. 逻辑表达式

用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。逻辑运算举例如下:

        !a            //若a为真,则!a为假
        a&&b          //若a、b同时为真,则a&&b为真
        a||b          //若a、b只要有一个为真,则a||b为真

逻辑运算符的运算规则可以用真值表来说明,表2.4给出了操作数a和b值的各种组合,以及逻辑运算的结果。

表2.4 逻辑运算符的真值表

注意:在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只有在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。

(1)如果多个表达式用“&&”连接,则一个假表达式将使整个连接为假。例如:

        int  n=4,m=7;
        if(n > 5 && m++ < 11)
          cout<<"m  should  not  be  changed.\n";
        cout << "m = " << m <<endl;

程序输出结果为:m = 7。

由于n > 5的值为false,所以if条件表达式的值不用看后面的运算就确定为false,所以后面的表达式没有被执行,这样m的值为7而不是8。

(2)如果多个表达式用“||”连接,则一个真表达式将使整个连接为真。例如:

        if(score > 70 || score < 50)
          cout<<"The  score  is  normal.\n"

如果score > 70成立,则不会执行score < 50的比较而直接执行输出语句。