逍遥自在学C语言 | 逻辑运算符

前言

逍遥自在学C语言 | 逻辑运算符

一、人物简介

  • 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。

逍遥自在学C语言 | 逻辑运算符

  • 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。

逍遥自在学C语言 | 逻辑运算符

二、构成和表示方式

  • 逻辑运算符是用来比较和操作布尔值的运算符
  • C语言中的逻辑运算符主要有3个,如下表所示
运算符 名称 示例 描述
&& a && b 当a和b都为真时,返回真
|| a || b 只要a或者b,其中任何一个为真,返回真
! !a 如果a的条件为真,返回假
  • 逻辑运算符的两边可以是变量、数值 或 表达式

? 变量

a && b
a || b
!a

? 数值

5 && 3
20 || a
!0

? 表达式

a+b && c
a-b || c-a
!(a+c)

三、逻辑运算符的应用

1、运算结果

逻辑运算符的运算结果为0(假)或者1(真)

  • 当条件成立时结果为,条件不成立结果则为

1.1 与运算

  • 实例演示
#include <stdio.h>
int main() {
    printf("1 && 2 结果为%d\n", 1 && 2);
    printf("0 && 3 结果为%d\n", 0 && 3);
    printf("5 && 0 结果为%d\n", 5 && 0);
    printf("0 && 0 结果为%d\n", 0 && 0);
    return 0;
}
  • 运行结果
    逍遥自在学C语言 | 逻辑运算符

1.2 或运算

  • 实例演示
#include <stdio.h>
int main() {
    printf("1 || 2 结果为%d\n", 1 || 2);
    printf("0 || 3 结果为%d\n", 0 || 3);
    printf("5 || 0 结果为%d\n", 5 || 0);
    printf("0 || 0 结果为%d\n", 0 || 0);
    return 0;
}
  • 运行结果

逍遥自在学C语言 | 逻辑运算符

1.3 非运算

  • 实例演示
#include <stdio.h>
int main() {
    printf("!2 结果为%d\n", !2);
   	printf("!0 结果为%d\n", !0);
    return 0;
}
  • 运行结果

逍遥自在学C语言 | 逻辑运算符

!! ,将任何值转换为布尔值

  • !!可以将一个整数、字符或指针值转换为一个布尔值。

例如,下面的代码片段中,将字符串转换为布尔值,并将其用于条件判断:

#include <stdio.h>

int main()
{
    char *str = "hello";
    int bool_value = !!str;

    if(bool_value) 
    {
      printf("str is not null\n");
    } 
    else 
    {
      printf("str is null\n");
    }
	
    return 0;
}

  • 运行结果

逍遥自在学C语言 | 逻辑运算符

由于hello是一个非空字符串,所以!!将其转换为1,if条件语句的条件将被认为是真,所以第一个printf语句将被执行。

反之,如果字符串“str”为NULL,则!!将其转换为0,if条件将被认为是假,第二个printf语句将被执行。

2、运算符嵌套

  • 逻辑运算符是允许嵌套使用的,运算的结果可以继续作为逻辑运算符的一个参数

  • 实例演示

#include <stdio.h>
int main() {
    int a = !( (6 > 3) && (11 - 20) && (0 - 1) );
    int b = !( (5 + 4) && (7 - 8) && (3 < 2) );
    printf("a = %d\n", a);
    printf("b = %d\n", b);
    return 0;
}
  • 运行结果

逍遥自在学C语言 | 逻辑运算符

? 第一个嵌套表达式分析

  • 因为6 > 3的结果为111 - 20的结果为-9,所以(6 > 3) && (11 - 20) && (0 - 1)等价于1 && -1,结果为1
  • a = !(1),结果为0

?第二个嵌套表达式分析

  • 5 + 4的结果为17 - 8的结果为-1
  • 3 < 2的结果为0
  • 所以(5 + 4) && (7 - 8) && (3 < 2)等价于9 && 0,结果为0
  • a = !(0),结果为1

3、优先级

  • 先来看这个实例
#include <stdio.h>
int main() {
    int a = !( 1 || -1 && 0 );
    printf("a = %d\n", a);
    return 0;
}

逍遥自在学C语言 | 逻辑运算符

  • 那么实际的运行结果如何呢?

逍遥自在学C语言 | 逻辑运算符

逍遥自在学C语言 | 逻辑运算符

  • 因为&& 的优先级高于||,所以-1 && 0会被先运算,结果为0
  • 1 || -1 && 0等价于1 || 0,结果为1
  • a = !(1),结果为0

逻辑运算符的优先级顺序为 ∣∣ < && < !

有兴趣的小伙伴可以参考上面的代码来验证&&!的优先级关系哦!

小结

通过本文的讲解,我们学会了3种逻辑运算符的使用方法及优先级关系,下一篇文章,我们将讲解位运算符。

原文链接:https://www.cnblogs.com/Wayne123/p/17293728.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:逍遥自在学C语言 | 逻辑运算符 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • C++程序的五大内存分区实例详解

    当我们编写C++程序时,系统会默认给程序分配内存,这些内存被分为五个不同的区域,每个区域用途不同,下面我们来详细介绍一下这五个区域的作用。 代码区(文字常量区) 代码区主要用来存放程序的执行代码,这部分内存是只读的,并且在程序启动时就已经固定分配好了。在一个C++程序中,所有的函数、语句都被转换成了二进制码,并被存储在代码区中。代码区还包括存储在程序中的字符…

    C 2023年5月23日
    00
  • PostgreSQL数据库中跨库访问解决方案

    PostgreSQL的跨库访问解决方案有许多,本文将针对常用的四种方法进行详细讲解。 1. Oracle FDW Oracle FDW(Foreign Data Wrapper),即外部数据封装,是PostgreSQL中访问Oracle数据库的一种方法。使用该方法需要安装Oracle客户端并配置tnsnames.ora,主要步骤如下: 安装Oracle客户端…

    C 2023年5月22日
    00
  • C++实现职工信息管理系统

    C++实现职工信息管理系统 介绍 C++实现职工信息管理系统是一个简单的控制台应用程序,用于管理一个公司中的职工信息。主要的功能包括添加职工、显示职工列表、删除职工、修改职工信息等。 实现步骤 步骤一:设计职工信息类 我们首先需要设计一个职工信息类,它包括职工编号、职工姓名、职工职位和职工性别等信息。这个类可以使用C++中的结构体来实现。 // 职工信息结构…

    C 2023年5月23日
    00
  • C语言中如何进行动态内存分配?

    C语言中的动态内存分配功能是通过函数库和提供的。动态内存分配指的是程序在运行过程中,根据需要在堆区或自由存储区中动态地为变量分配所需的内存空间,使得程序可以根据需要动态地使用内存,从而更加灵活和高效地使用计算机的资源。 在C语言中,动态内存分配的过程可以分为以下三个步骤: 申请内存空间:使用malloc()函数在堆区分配一块适当大小的内存空间。malloc(…

    C 2023年4月27日
    00
  • C++哈希应用之位图,哈希切分与布隆过滤器详解

    C++哈希应用之位图,哈希切分与布隆过滤器详解 前言 哈希是一种常用的数据结构技术,它的应用很广泛。在一些场景下,我们需要快速地判断某个元素是否在一个集合中,而哈希刚好可以满足这个需求。本文将详细讲解C++哈希应用之位图、哈希切分与布隆过滤器。 位图 位图是一种基于二进制的数据结构。在计算机中,我们通常用一个字节(Byte)表示8个二进制位(Bit)。因此,…

    C 2023年5月23日
    00
  • C++实现停车场管理系统

    C++实现停车场管理系统的完整攻略 目录 简介 功能需求 设计思路 代码实现 示例说明 总结 1. 简介 停车场管理系统是一种常见的用于管理停车场的软件系统,通常包括车辆进入、出场、停车位置管理等多个功能。本文将介绍如何使用C++语言实现一个简单的停车场管理系统。 2. 功能需求 本次实验中,我们将实现以下功能: 停车:记录车辆入场时间和车牌号,并将车辆信息…

    C 2023年5月23日
    00
  • 利用上下文属性将 C++ 对象嵌入 QML 里

    利用上下文属性将 C++ 对象嵌入 QML 里需要遵循以下步骤: 构建 C++ 类,使其能够注册到 QML 中 创建 QML 文件,利用上下文属性将 C++ 对象嵌入到 QML 中 在 QML 中使用 C++ 对象 下面我们用两个示例说明这个过程。 示例一 假设我们需要向 QML 注册名为 Person 的 C++ 类,并将其实例化之后添加到 QML 上下文…

    C 2023年5月22日
    00
  • C语言实现点菜系统

    C语言实现点菜系统 本攻略将介绍如何使用C语言实现一个简单的点菜系统。在这个系统中,顾客可以浏览菜单,选择自己的菜品并计算价格。系统则会输出选择的菜品及总价。 基本思路 定义菜单。菜单的定义可以采用数组的方式实现,每个元素代表一道菜品,包括名称和价格。 展示菜单。通过循环遍历数组,输出所有菜品名称及价格。 用户选择菜品。通过让用户输入菜品的编号,实现选择菜品…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部