15_逻辑运算符分析

关键词:&&||!

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语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,271评论 0 13
  • 运算符是处理数据的基本方法,用来从现有的值得到新的值。JavaScript 提供了多种运算符,本章逐一介绍这些运算...
    许先生__阅读 632评论 0 3
  • 本章将会介绍 模块和源文件访问级别访问控制语法自定义类型子类常量、变量、属性、下标构造器协议扩展泛型类型别名位运算...
    寒桥阅读 933评论 0 2
  • 是可是KDJ是可是KDJ是你的内存卡次基督教的基督教面对满满的小米 是可是计算机就是你说你女的浓浓的男的女的浓浓 ...
    Jay老红军阅读 132评论 0 0
  • 办公室搬迁至临街的一幢小楼,嘈杂了许多,但紧贴着窗沿的几棵梧桐树却为枯燥的生活带来了几丝生动。久坐之后,总想看看她...
    newjulie阅读 359评论 2 2