C零基础课程-14-逻辑运算符

Posted shellmad

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C零基础课程-14-逻辑运算符相关的知识,希望对你有一定的参考价值。

C语言中的逻辑运算符

C语言中的逻辑运算符有“&&”、“||”、及“!”,他们分别被称为逻辑与、逻辑或、逻辑非。
前两者是二元运算符,逻辑非是一元运算符。

逻辑与运算符“&&”

逻辑与运算符的基本语法是:

表达式1 && 表达式2

其求值的结果规则是:

  • 当两个表达式均为非0时,求值结果为1
  • 其他情况(只要有至少一个表达式为0),求值结果为0

实例:判断一个数字既可以被5整除又可以被7整除

#include <stdio.h>

int main(int argc, char* argv[])
{
    int nValue = 0;
    scanf("%d", &nValue);

    if (nValue % 5 == 0 && nValue % 7 == 0)
    {
        printf("这个数字既可以被5整除,也可以被7整除
");
    }
 return 0;
}

逻辑或运算符“||”

逻辑或运算符的基本语法是:

表达式1 || 表达式2

其求值的结果规则是:

  • 当两个表达式均为0时,求值结果为0
  • 其他情况(只要有至少一个表达式为非0),求值结果为1

实例:判断一个年份,是否为闰年,判断闰年的标准是:

  • 能被100整除,同时能被400整除
  • 或者不能被100整除,但是能被4整除
#include <stdio.h>

int main(int argc, char* argv[])
{
    int nYear = 0;
    scanf("%d", &nYear);

    //能被100整除,同时能被400整除
    // nYear % 100 == 0 && nYear % 400 == 0

    //不能被100整除,但是能被4整除
    // nYear % 100 != 0 && nYear % 4 == 0

    if (
        (nYear % 100 == 0 && nYear % 400 == 0)
        || (nYear % 100 != 0 && nYear % 4 == 0)
        )
    {
        printf("这个是闰年
");
    }
    else
    {
        printf("不是闰年
");
    }
    return 0;
}

逻辑非运算符“!”

逻辑非就是将表达式结果“反置”,其基本语法是:

!原表达式

其求值规则是:

  • 如果原表达式为0,则求值后结果为1
  • 如果原表达式结果为非0,则求值后结果为0
#include <stdio.h>

int main(int argc, char* argv[])
{
    int nValue = 0;
    scanf("%d", &nValue);

    printf("原有表达式的值:%d
", nValue);
    nValue = !nValue;
    printf("逻辑取反后的表达式的值:%d
", nValue);
 return 0;
}

逻辑运算符的短路特点

先看一段代码,推测以下代码的打印结果:

#include <stdio.h>

int main(int argc, char* argv[])
{
    (printf("Hello, world!
") ) || (printf("something else
!"));
 return 0;
}

实际上,这样的打印结果,与逻辑运算符的短路特性有关。
简单总结如下:

  • 如果||运算符左边的表达式为真(非0),则右边的表达式不再执行
  • 如果&&运算符左边的表达式为假(0),则右边的表达式不再执行

以上是关于C零基础课程-14-逻辑运算符的主要内容,如果未能解决你的问题,请参考以下文章

C零基础课程-15-条件运算符

C零基础课程-13-关系运算符与关系表达式

零基础 快速学Java韩顺平 p62-80 运算符:算数关系逻辑赋值三元和优先级

《C#零基础入门之百识百例》 比较和逻辑运算符 -- 判断闰年

C零基础课程-04-VS调试入门

逻辑运算 — 白话Lua系列零基础教程 第四期