逍遥自在学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++的区别详解 C和C++是两种非常常见的编程语言,在很多领域都有广泛的应用。虽然在某些方面它们很相似,但在许多方面它们也存在很大的差异。下面我们将详细说明C和C++之间的区别。 1. 语言的起源和发展历史 C语言是由Dennis Ritchie在20世纪70年代初创造的,最初是为了在Unix操作系统上编写系统级应用程序而设计的。C++语言则是由Bja…

    C 2023年5月22日
    00
  • c语言实现奇偶排序算法

    下面是详细讲解“c语言实现奇偶排序算法”的完整攻略: 什么是奇偶排序算法 奇偶排序算法,也称为奇偶交换排序算法,是一种简单的排序算法。它的特点是同时进行奇数与偶数位置的元素比较和交换,直到序列有序为止。 奇偶排序算法的实现 奇偶排序算法的实现过程可以分为两个阶段,一阶段是进行奇偶位置上元素的比较和交换,二阶段是将相邻的元素比较和交换,两个阶段交替执行,直到序…

    C 2023年5月23日
    00
  • SpringBoot 整合Redis 数据库的方法

    以下是SpringBoot整合Redis的完整攻略: 环境准备 SpringBoot 2.x及以上 Redis 4.x及以上 Redis的Java客户端工具Jedis或Lettuce(本文以Jedis为例) SpringBoot 配置Redis 在SpringBoot的application.yml或application.properties文件中添加Re…

    C 2023年5月23日
    00
  • docker 文件存放路径, 修改端口映射操作方式

    下面给出 Docker 文件存放路径和修改端口映射操作方式的完整攻略。 Docker 文件存放路径 Docker 容器的数据和配置会存储在宿主机的某个目录中,称为 Docker 数据目录,也就是容器数据的本地持久化存储路径。 查看容器数据目录 可以通过以下指令查看容器数据目录: docker inspect <容器名称或ID> | grep -i…

    C 2023年5月23日
    00
  • 如何在C++中建立一个顺序表

    建立顺序表的过程可以分为以下几个步骤: 1. 准备工作 在C++中建立顺序表,我们需要先定义一个结构体来表示顺序表的元素,包含数据和序号信息。比如我们可以这样定义: struct ListElement { int data; // 数据 int index; // 序号 } 2. 建立顺序表 接下来我们可以使用一个数组来保存顺序表中的元素,需要先定义数组的…

    C 2023年5月23日
    00
  • C语言与C++中内存管理详解

    C语言与C++中内存管理详解 内存管理是C语言和C++中非常重要的一部分,正确的内存管理可以避免内存泄漏和内存溢出等问题,从而提高程序的稳定性和性能。本文将详细介绍C语言和C++中的内存管理技巧和注意事项。 内存分配和释放 在C语言和C++中,内存分配和释放是通过动态内存管理函数来实现的。C语言中的动态内存管理函数包括malloc()、calloc()和re…

    C 2023年5月22日
    00
  • C++实现strcpy函数实例

    C++实现strcpy函数实例 什么是strcpy函数 strcpy是C/C++中非常常用的字符串复制函数,用于将一个字符串复制到另一个字符串中。其函数原型如下: char* strcpy(char* dest, const char* src); 其中,dest是目标字符串指针,src是源字符串指针。 实现strcpy函数的步骤 计算源字符串的长度n 申请…

    C 2023年5月23日
    00
  • SQL Server 作业的备份(备份作业非备份数据库)

    SQL Server 作业备份攻略 前提条件 在进行 SQL Server 作业备份前,需要先满足以下条件: 必须有 SQL Server Management Studio(SSMS)的访问权限; 必须有 SQL Server Agent 的管理权限; 确保备份作业未选中要备份的数据库。 备份作业 SQL Server 的作业(job)是一种定时运行的任务…

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