当前位置: 首页 > news >正文

学习C语言第三天 :关系操作符、逻辑操作符

1.关系操作符

        C语言用于比较的表达式,称为“关系表达式”里面使用的运算符就称(relationalexpression),为“关系运算符” (relationaloperator) ,主要有下面6个。

  • >   大于运算符

  • <   小于运算符

  • >=  大于等于运算符

  • <=  小于等于运算符

  • ==  等于运算符

  • !=   不相等运算符

        以下是例子:

a > b;a < b;a >= b;a <= b;a == b;a != b;

        关系表达式通常返回 0 或 1,表示真假。

        C语言中,0 表示假,所有非零值表示真。比如,20 > 12 返回 1, 12 > 20 返回 0

        关系表达式常用于 if 或 while 结构。例如下例子:

if (i == 3)
{printf("i is 3.");
}

        注意:相等运算符 == 与赋值运算符  = 是两个不一样的运算符,不要混淆。有时候,可能会不小心写出下面的代码,它可以运行,但很容易出现意料之外的结果。

if (i = 3)
{....}

        上面示例中,原意是 i == 3,但是不小心写成 i = 3。这个式子表示对变量 i 赋值 3,它的返回值为 3,所以 if 判断总是为真。
为了防止出现这种错误,有的程序员喜欢将变量写在等号的右边。

if (3 == x)
{...}

        如果把 == 误 写成了 = ,编译器会报错的。注意。

        还有一个需要避免的错误:多个关系运算符不宜连用。

        例子:

        i < j < k

        上面示例中,连续使用两个小于运算符。这是合法表达式,不会报错,但是通常达不到想要的结果即不是保证变量j的值在 i和 k 之间。因为关系运算符是从左到右计算,所以实际执行的是下面的表达式。

(i < j ) < k 

        上面式子中,i< j 返回 或 1 ,所以最终是  或 1与变量  进行比较。如果想要判断变量 j的值是否在i和 k 之间,应该使用下面的写法。

i < j && j < k

        例子:输入一个年龄,如果年龄在18岁~36岁之间,输出青年        

#include <stdio.h>int main()
{int age = 0;scanf("%d", &age);if (18 <= age <= 36){printf("青年");}return 0;
}

        当输入10的时候,也是青年,如图:

        这是因为,我们先拿18和age中存放的10比较,表达式18<=10为假,18<=age 的结果是0,再拿0和36比较,0<=36为真,所以打印了 青年,所以即使当age是10的时候,也能打印 青年,逻辑上是有问题,这个代码应该怎么写呢? 

#include <stdio.h>int main()
{int age = 0;scanf("%d", &age);if (age <= 18 && age <= 36){printf("青年");}return 0;
}

2.逻辑操作符

        逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符

  • ( ! ) :逻辑取反运算符(改变单个表达式的真假)

  • ( && ) : 与运算符,就是并且的意思 (两侧的表达式都为真,则为真,否则为假)

  • ( || ) : 或运算符,就是或者的意思 (两侧至少有一个表达式为真,则为真,否则为假)

            

 

         注:C语言中,非0表示真,0表示假。

        2.1.逻辑取反运算符

                比如,我们有一个变量叫 flag ,如果flag为假,要做一个什么事情,就可以这样写代码:

if(!flag)
{printf("do study");  
}

                如果 flag 为真,!flag 就是假,如果 flag 为假, !flag 就是真所以上面的代码的意思就是 flag 为假,执行if语句中的代码。

        2.2.与运算符

                && 就是与运算符,也是并且的意思, && 是一个双目操作符,使用的方式是 a&&b,&& 两边的表达式都是真的时候,整个表达式才为真,只要有一个是假,则整个表达式为假。
比如:如果我们说月份是3月到5月,是春天,那使用代码怎么体现呢?

#include <stdio.h>int month = 0;scanf("%d", &month);if(month >= 3 && month <= 5)
{printf("春季\n");
}

        这里表达的意思就是month既要大于等于3,又要小于等于5,必须同时满足。

        2.3.或运算符

               || 就是或运算符,也就是或者的意思,(||)也是一个双目操作符,使用的方式是 (a || b),两边的表达式只要有一个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。

比如:我们说一年中月份是12月或者1月或者2月是冬天,那么我们怎么使用代码体现呢?

#include <stdio.h>int month = 0;scanf("%d", &mont);if(month == 12 || month == 1 || month == 2)
{printf("冬季\n");
}

         使用闰年进行练习:

                输入一个年份year,判断year是否是闰年。

                1.能被4整除并且不能被100整除是闰年。

                2.能被400整除是闰年。

#include <stdio.h>int main()
{int year = 0;scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){printf("%d是闰年!", year);}return 0;
}

        运行结果:

相关文章:

学习C语言第三天 :关系操作符、逻辑操作符

1.关系操作符 C语言用于比较的表达式&#xff0c;称为“关系表达式”里面使用的运算符就称(relationalexpression)&#xff0c;为“关系运算符” (relationaloperator) &#xff0c;主要有下面6个。 > 大于运算符 < 小于运算符 > 大于等于运算符 < 小于等…...

Jenkins自动化打包脚本

一、背景 jenkins可以设置定时任务打包&#xff0c;也已手动点按钮打包&#xff0c;还可以通过执行http请求打包&#xff0c;今天我们就通过shell脚本&#xff0c;通过curl命令进行jenkins打包。 二、步骤 2.1 在jenkins上构建项目 设置触发器 2.2 通过shell脚本触发远程构…...

一百五十、Kettle——Kettle官网下载地址

一、官网地址 Home - Hitachi VantaraThe site home pagehttps://community.hitachivantara.com/docs/DOC-1009855 二、下载地址 Pentaho from Hitachi Vantara download | SourceForge.netDownload Pentaho from Hitachi Vantara for free. End to end data integration and…...

使用 Visual Studio Code 调试 CMake 脚本

之前被引入到 Visual Studio 中的 CMake 调试器&#xff0c;现已在 Visual Studio Code 中可用。 也就是说&#xff0c;现在你可以通过在 VS Code 中安装 CMake 工具扩展&#xff0c;来调试你的 CMakeLists.txt 脚本了。是不是很棒? 背景知识 Visual C 开发团队和 CMake 的维…...

【云原生】Docker 详解(二):Docker 架构及工作原理

Docker 详解&#xff08;二&#xff09;&#xff1a;Docker 架构及工作原理 Docker 在运行时分为 Docker 引擎&#xff08;服务端守护进程&#xff09; 和 客户端工具&#xff0c;我们日常使用各种 docker 命令&#xff0c;其实就是在使用 客户端工具 与 Docker 引擎 进行交互。…...

微服务 云原生:基于 Gogs + Drone 实现 CI/CD 自动化

一般构建部署 以一个简单的前后端项目来说&#xff0c;分别编写前后端的 Dockerfile 文件并构建镜像&#xff0c;然后编写 docker-compose.yml 构建部署&#xff0c;启动运行。每次代码变更后都需重新手动打包、构建、推送。 一个简单的例子&#xff1a; 前端&#xff1a; 项…...

ADO.NET之SQL Server

ADO.NET是.NET平台上的一组用于访问和操作关系型数据库的API。它提供了一种以统一的方式连接到各种数据库系统并执行数据库操作的方法。现在有很多的ORM框架都是基于ADO.NET进行数据访问&#xff08;比如&#xff1a;Entity Framework (EF)、Dapper、NHibernate 、FluentNHiber…...

Nginx负载均衡(重点)

正向代理 部署正向代理 server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; proxy_pass http://20.0.0.60:80…...

第一章 SpringBoot入门

1.SpringBoot简介 1.1.简介 Spring Boot来简化spring应用开发&#xff0c;约定大于配置去繁从简&#xff0c;just run就能创建一个独立的&#xff0c;产品级别的应用。 背景&#xff1a;J2EE笨重开发&#xff0c;繁多的配置、低下开发效率、复杂的部署流程、第三方技…...

JavaScript Es6_2笔记 (深入对象 + 内置构造函数 + 包装类型)+包含实例方法

JavaScript 进阶 文章目录 JavaScript 进阶深入对象构造函数实例成员静态成员 内置构造函数ObjectArray包装类型StringNumber 了解面向对象编程的基础概念及构造函数的作用&#xff0c;体会 JavaScript 一切皆对象的语言特征&#xff0c;掌握常见的对象属性和方法的使用。 了解…...

尼科彻斯定理

目录 1.题目概述 2.题解 思路分析 具体实现 1.题目概述 验证尼科彻斯定理&#xff0c;即&#xff1a;任何一个整数m的立方都可以写成m个连续奇数之和。 例如&#xff1a; 1^31 2^335 3^37911 4^313151719 输入一个正整数m&#xff08;m≤100&#xff09;&#xff0c;将…...

主数据管理案例-中国外运

1、 背景介绍及难点分析 作为世界领先的物流行业整合商、端到端的全程供应链解决方案和一站式物流服务提供商&#xff0c;中国外运非常重视信息化建设&#xff0c;先后投资建设了 300多个信息系统&#xff0c;为中国外运的内部管理和业务运作提供 IT 支持和保障。 由于缺乏统一…...

改进DevSecOps框架的 5 大关键技术

Markets and Markets的一项研究显示&#xff0c;全球DevOps的市场规模从2017年的29亿美元增加到2023年的103.1亿美元&#xff0c;预测期的年复合增长率(CAGR)为24.7%。人们对DevOps越来越感兴趣&#xff0c;因为DevOps不仅能够压缩软件的交付周期&#xff0c;还能提高交付的速度…...

uni-app之app上传pdf类型文件

通过阅读官方文档发现&#xff0c;uni.chooseFile在app端不支持非媒体文件上传&#xff1b; 可以使用这个插件&#xff0c;验证过可以上传pdf&#xff1b;具体使用可以去看文档 插件地址 就是还是会出现相机&#xff0c;这个可能需要自己解决下 实现功能&#xff1a;上传只能上…...

bash: sudo: command not found的解决方法 | 安装sudo

-bash: sudo: command not found的解决方法 https://www.cnblogs.com/pengpengboshi/p/16159443.html 报错 安装apt-get update报错由于没有公钥&#xff0c;无法验证下列签名&#xff1a; NO_PUBKEY A4B469963BF863CC解决办法是手动加入 &#xff08;sudo可去掉&#xff09;…...

电脑合上盖子无线网络不会断开

控制面板\硬件和声音\电源选项\系统设置 最终选择不会采取任何操作 选择不会采取任何操作...

【从零开始学习JAVA | 第四十篇】了解线程池

目录 前言&#xff1a; 线程池&#xff1a; 线程池的工作流程&#xff1a; 代码实现线程池&#xff1a; 任务拒绝策略&#xff1a; 线程池多大才算合适&#xff1f; 总结&#xff1a; 前言&#xff1a; 在Java编程中&#xff0c;线程池是一个强大的工具&#xff0c;它能…...

axios如何取消请求,其原理是什么?

axios 可以通过创建一个 CancelToken 来取消一个请求,基本原理是: 创建一个 CancelToken 的实例,它有一个 executor 函数,可以通过调用 executor 参数中的 cancel 函数来取消请求。在 axios 请求配置中指定 cancelToken 属性,将 CancelToken 实例传递进去。当我们需要取消请求…...

消息中间件 Asio (C++)

折腾了一上午&#xff0c;看到这个结果的时候泪目了兄弟闷&#xff0c;讲真。我的asio客户端成功收到服务端发来的消息了。虽然这确实是极其智障又简单的入门哈哈 下载独立版本 asio网络通信库新建cmake工程&#xff0c;CMakeLists.txt加载asioasio最简单的服务端和客户端代码…...

3.4 网络安全管理设备

数据参考&#xff1a;CISP官方 目录 IDS (入侵检测系统)网络安全审计漏洞扫描系统VPN&#xff08;虚拟专网&#xff09;堡垒主机安全管理平台 一、IDS (入侵检测系统) 入侵检测系统&#xff08;IDS&#xff09;是一种网络安全设备&#xff0c;用于监测和检测网络中的入侵行…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面&#xff0c;接口成功记录日志&#xff0c;失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...