• C 语言


    逻辑运算符:

    运算符 含义 优先级
    ! 逻辑非
    && 逻辑与
    || 逻辑或

    举例:

    !a:如果 a 为真,!a 为假;如果 a 为 假,!a 为真

    a && b:a 和 b 同时为真,结果才为真;a 和 b 有一个为假,结果就为假

    a || b:a 和 b 有一个为真或 a 和 b 全为真,结果就为真;a 和 b 全为假,结果才为假

    逻辑表达式:

    用逻辑运算符将两边的变量、数据或表达式连接起来,称之为逻辑表达式

    #include <stdio.h>
    
    int main()
    {
    	printf("%d
    ", 3 > 1 && 1 < 2);
    	printf("%d
    ", 3 < 1 && 1 < 2);
    	printf("%d
    ", !(1));
    	printf("%d
    ", !0 + 1 < 1 || !(3 + 1));
    	printf("%d
    ", 'a' - 'b' && 'c');
    
    	return 0;
    }
    

    运行结果

    !0 + 1 < 1 || !(3 + 1):!0 等于 1,1 + 1 小于 1,结果为0;3 + 1 等于 4,!(4) 为 0,所以结果为 0

    'a' - 'b' && 'c':'a' - 'b' 的值为 -1,不等于 0,为真;'c' 的值也不为 0,所以结果为 1

    短路求值:

    短路求值又称最小化求值,是一种逻辑运算符的求值策略

    #include <stdio.h>
    
    int main()
    {
    	int a = 3, b = 3;
    	(a = 4) && (b = 5);
    	printf("a 的值为 %d ,b 的值为 %d
    ", a, b);
    	(a = 1) || (b = 5);
    	printf("a 的值为 %d, b 的值为 %d
    ", a, b);
    	return 0;
    }
    

    运行结果

    #include <stdio.h>
    
    int main()
    {
    	int a = 3, b = 3;
    	(a = 0) && (b = 5);
    	printf("a 的值为 %d ,b 的值为 %d
    ", a, b);
    	(a = 1) || (b = 5);
    	printf("a 的值为 %d, b 的值为 %d
    ", a, b);
    	return 0;
    }
    

    运行结果

    逻辑与运算进行短路求值时:

    先对 && 左边的表达式进行运算,如果左边运算的结果不等于 0 的话,将对 && 右边的表达式进行运算

    如果 && 左边运算的结果等于 0 的话,就不对右边的表达式进行运算

    逻辑或运算进行短路求值时:

    无论 || 左边的表达式的值是否为 0,都会对 || 右边的表达式进行求值

  • 相关阅读:
    反射
    定义类
    集合list,set,Map
    API util
    进程与多线程
    泛型
    API string
    JDBC存储过程
    预处理
    JDBC
  • 原文地址:https://www.cnblogs.com/sch01ar/p/9693839.html
Copyright © 2020-2023  润新知