15_逻辑运算符分析

作者: 编程半岛 | 来源:发表于2018-03-07 10:21 被阅读5次

    关键词:&&||!

    1. 初探逻辑运算符

    #include <stdio.h>
    
    int main()
    {
        int i = 0;
        int j = 0;
        int k = 0;
        
        ++i || ++j && ++k;
        
        printf("i = %d\n", i);
        printf("j = %d\n", j);
        printf("k = %d\n", k);
    
        return 0;
    }
    

    输出结果:

    i = 1
    j = 0
    k = 0
    

    2. 逻辑运算符分析——程序中的短路

    • ||从左向右开始计算:
      当遇到为的条件时停止计算,整个表达式为
      所有条件为表达式才为假

    • &&从左向右开始计算:
      当遇到为的条件时停止计算,整个表达式为
      所有条件为表达式才为真

    • 逻辑表达式中,&&||具有更高的优先级

    &&||混合运算时,整个表达式被看作||表达式(因为||的优先级低于&&,因此最后运算||),编译器从左向右开始计算&&表达式,当某个&&表达式的值为真时,停止计算,整个表达式值为真。

    #include <stdio.h>
    
    int g = 0;
    
    int f()
    {
        printf("In f()...\n");
        
        return g++;
    }
    
    int main()
    {
        if( g || f() && f() )
        {
            printf("In if statement: %d\n", g);
        }
        
        printf("In main(): %d\n", g);
    
        return 0;
    }
    

    输出结果:

    In f()...
    In main(): 1
    

    3. !逻辑非分析

    C语言中的逻辑非!只认识0,只知道见了0就返回1.因此当其遇见的值不是0时,其结果为0.

    4. 逻辑非运算符的使用

    #include <stdio.h>
    
    int main()
    {
        printf("%d\n", !0);
        printf("%d\n", !1);
        printf("%d\n", !100);
        printf("%d\n", !-1000);
    
        return 0;
    }
    

    输出结果:

    1
    0
    0
    0
    

    5. 小结

    • 程序中的逻辑表达式遵循短路规则
    • &&||混合运算时:
      整个表达式被看作||表达式
      从左向右先计算&&表达式
      最后计算||表达式
    • 逻辑非!运算符只认得0:遇见0返回1,否则统统返回0

    声明:此文章为本人在学习狄泰软件学院《C语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!

    相关文章

      网友评论

        本文标题:15_逻辑运算符分析

        本文链接:https://www.haomeiwen.com/subject/agcqfftx.html