逻辑运算符学习笔记

逻辑运算符

c语言中的逻辑运算符有&&(逻辑与)、||(逻辑非)、!(逻辑或)。其运算规则如下表

运算符描述实例
&& 如果两个操作数都为真,则条件为真,否则为假。 (A && B) 为假。
|| 如果两个操作数中有任意一个为真,则条件为真,否则为假。 (A || B) 为真。
! 用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 !(A && B) 为真。

实例


#include<iostream>

using namespace std;

int main(){
    int a = 1;
    int b = 2;
    int c; 
    if(a && b){
        printf("a&&b为真\n");
    }else{
        printf("a&&b为假\n");
    }
    if(a || b){
        printf("a||b为真\n");
    }else{
        printf("a||b为假\n");
    }
    if(!(a && b)){
        printf("a&&b为真\n");
    }else{
        printf("a&&b为假\n");
    }
    return 0;
}

运行结果如下:

另外值得一提的是逻辑运算符的短路特性,短路特性是指如果能够同过某一个条件得知整个表达式的真假情况,将不再进行下一步的运算,比如说a&&b,如果a为假,则整个式子为假,将不再对b进行判断。

实例:

#include<stdio.h>

int main(){
    printf("%d\n",3/0);
    return 0;
}

  运行上面代码,编译器会报错:

"message": "division by zero [-Wdiv-by-zero]"

意思是0不能被用来当除数

而运行下面代码:

 1 #include<stdio.h>
 2 
 3 int main(){
 4     int a = 0;
 5     int b = 2;
 6     if(a && (b/0)){
 7         printf("yes\n");
 8     }else{
 9         printf("no\n");
10     }
11     return 0;
12 }

得到的结果为:

 

 通过了编译,证明了逻辑运算符的短路特性。当然逻辑或同理。

以上就是我对逻辑运算符的一些认识,如果错误之处,敬请指正。

posted @ 2019-09-14 15:42  pony.ma  阅读(544)  评论(0编辑  收藏  举报