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_逻辑运算符分析

    关键词:&&、||、! 1. 初探逻辑运算符 输出结果: 2. 逻辑运算符分析——程序中的短路 ||从左向右开始...

  • 1.4.运算符

    按功能分为: 算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算符 其他运算符 ---------- 逻辑运算...

  • JavaScript逻辑运算符与赋值运算符

    逻辑运算符 JavaScript中有三个逻辑运算符,&&与、||或、!非。 JavaScript 中的逻辑运算符可...

  • 1.3 Python 运算符

    1.3.1 算数运算符 1.3.2 关系运算符 1.3.3 赋值运算符 1.3.4 逻辑运算符 注: 逻辑运算优先...

  • day05赋值运算符.三元运算符.三元运算符在分页业务逻辑中使用

    赋值运算符 比较运算符 三元运算符 三元运算符在分页业务逻辑中使用 逻辑运算符

  • 逻辑运算符

    赋值运算符 比较运算符 先运算再比较 逻辑运算符 比较大于逻辑!,&&,|| 单目运算符(!++ -- & ) 大...

  • 03-基本运算

    运算符可以分为:算术运算符、比较运算符和逻辑运算符。 优先级是:算术运算符>比较运算符>逻辑运算符。 不过呢,开始...

  • 03-基本运算

    运算符可以分为:算术运算符、比较运算符和逻辑运算符。优先级是:算术运算符>比较运算符>逻辑运算符。不过呢,开始没背...

  • 【Python】运算符

    基本运算符 比较运算符 逻辑运算符

  • 运算符

    算术运算符 + - * / % ++ -- 比较运算符 ><<=>= == 逻辑运算符 & &&| ||^! &...

网友评论

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

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