C 语言的逻辑运算符

news2024/9/25 21:30:46

C 语言的逻辑运算符包括三种:

在这里插入图片描述
逻辑运算符可以将两个关系表达式连接起来.

Suppose exp1 and exp2 are two simple relational expressions, such as cat > rat and debt == 1000 . Then you can state the following:

■ exp1 && exp2 is true only if both exp1 and exp2 are true.
■ exp1 || exp2 is true if either exp1 or exp2 is true or if both are true.
■ !exp1 is true if exp1 is false, and it’s false if exp1 is true.

&& 和 || 都是序列点.

因此, 一旦发现某个元素使得整个表达式无效, 将会立刻停止求值而不会继续向后计算.

例如, 语句:

while ((c = getchar()) != ' ' && c != '\n')

读取字符直到遇到第一个空格或者换行符, 第一个子表达式将读取到的字符赋值给 c. 后面的子表达式还会用到 c. 如果没有求值顺序的保证, 编译器可能会在给 c 赋值之前先对后面的表达式求值.

再例如, 语句:

if (num != 0 && 12 / num)

如果 num 为 0, 则第一个子表达式为假, 则整个表达式为假, 则不再继续对第二个子表达式求值, 这样可以避免把 0 作为除数.

逻辑表达式从左向右求值, 一旦算到了某个子表达式时, 发现整个表达式的值为真或假的结果能得到了, 则停止计算, 因此 && 和 || 都是短求值.

&& 可以用于范围测试, 例如, 语句:

if (num > 90 && num < 100)  // 测试 num 是否大于 90 且小于 100

再例如, 语句:

if (c >= 'a' && c <= 'z')  // 判断 c 是否是一个小写字母
{
	printf("%c is a lowercase character.\n", c);
}

上述代码只适用于相邻字母与相邻数字一一对应的字符编码, 例如 ASCII.

一种可移植的方法为:

if (islower(c))  // 判断 c 是否是一个小写字母
{
	printf("%c is a lowercase character.\n", c);
}

无论使用哪种字符编码, islower() 函数都能正常执行.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/854047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用库造一个list的轮子 【C++】

文章目录 list的模拟实现默认成员函数构造函数拷贝构造函数赋值运算符重载析构函数 迭代器迭代器为什么要存在&#xff1f;const_iteratorbegin和end inserterasepush_back && pop_backpush_front &&pop_frontswap 完整代码 list的模拟实现 默认成员函数 构造…

SpringBoot 底层机制分析[上]

文章目录 分析SpringBoot 底层机制【Tomcat 启动分析Spring 容器初始化Tomcat 如何关联Spring 容器】[上]搭建SpringBoot 底层机制开发环境Configuration Bean 会发生什么&#xff0c;并分析机制提出问题&#xff1a;SpringBoot 是怎么启动Tomcat &#xff0c;并可以支持访问C…

ios启动崩溃保护

网传上个月下旬小红书因为配置问题导致连续性启动崩溃&#xff0c;最终只能通过紧急发版解决。对于冷启动崩溃保护的最容易查到的资料来源于微信读书团队的分享。 何为保护&#xff1f;要保护什么&#xff1f;该怎样保护&#xff1f;带着这几个疑问&#xff0c;一一谈一下个人的…

浅谈常态化压测

目录 一、常态化压测介绍 1.什么是常态化压测 2.为什么要进行常态化压测 3.常态化压测的价值 二、常态化压测实践 1.常态化压测流程介绍 2.首次进行常态化压测实践 2.1 准备阶段 2.2 执行阶段 2.3 调优阶段 2.4 复盘阶段 三、常态化压测总结 一、常态化压测介绍 1…

AI让分子“起死回生”:拯救抗生素的新希望

生物工程师利用人工智能(AI)使分子“起死回生”[1]。 为实现这种分子“复活”,研究人员应用计算方法对来自现代人类(智人)和我们早已灭绝的远亲尼安德特人和丹尼索瓦人的蛋白质数据进行分析。这使研究人员能够鉴定出可以杀死致病细菌的分子&#xff0c;从而促进研发用于治疗人类…

微信生态升级!小绿书来了!

如你所知&#xff0c;微信不只是一个聊天工具。一切从照片开始&#xff0c;你拍了一张照片&#xff0c;你就拥有了自己的相册&#xff0c;在“朋友圈”你可以了解朋友们的生活。如你所见&#xff0c;微信&#xff0c;是一个生活方式。不知不觉间&#xff0c;微信已经走过了 11个…

Docker的入门与使用

什么是Docker&#xff1f; docker官网 简介与概述 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#x…

C字符串与C++ string 类:用法万字详解(上)

目录 引言 一、C语言字符串 1.1 创建 C 字符串 1.2 字符串长度 1.3 字符串拼接 1.4 比较字符串 1.5 复制字符串 二、C字符串string类 2.1 解释 2.2 string构造函数 2.2.1 string() 默认构造函数 2.2.2 string(const char* s) 从 C 风格字符串构造 2.2.3 string(co…

通讯协议034——全网独有的OPC HDA知识一之聚合(三)时间加权平均

本文简单介绍OPC HDA规范的基本概念&#xff0c;更多通信资源请登录网信智汇(wangxinzhihui.com)。 本节旨在详细说明HDA聚合的要求和性能。其目的是使HDA聚合标准化&#xff0c;以便HDA客户端能够可靠地预测聚合计算的结果并理解其含义。如果用户需要聚合中的自定义功能&…

使用一个python脚本抓取大量网站【2/3】

一、说明 我如何使用一个 Python 脚本抓取大量网站&#xff0c;在第 2 部分使用 Docker &#xff0c;“我如何使用一个python脚本抓取大量网站”统计数据。在本文中&#xff0c;我将与您分享&#xff1a; Github存储库&#xff0c;您可以从中克隆它;链接到 docker 容器&#xf…

软件定制开发平台:管好数据资源,降本提质!

在如今的发展时代&#xff0c;利用好优质的软件定制开发平台&#xff0c;定能给广大用户提高办公协作效率&#xff0c;创造可观的市场价值。作为服务商&#xff0c;流辰信息一直在低代码市场勤于钻研&#xff0c;不断努力&#xff0c;保持敏锐的市场眼光和洞察力&#xff0c;为…

Modelsim恢复编辑器的解决方案——只能将外部编辑器删除后,重新匹配编辑器

Modelsim恢复编辑器的解决方案——只能将外部编辑器删除后&#xff0c;重新匹配编辑器 1&#xff0c;Modelsim和Questasim是相互兼容的&#xff0c;配置的编辑器变成了sublime&#xff0c;且更换不了编辑器2&#xff0c;解决问题的方案&#xff0c;还是没得到解决3&#xff0c;…

Markdown和LaTex的学习

下载Typora Typora(免费版) 轻量级Markdown编辑器 - 哔哩哔哩 (bilibili.com) 部分编辑器需要进入设置 中开启特定的 Markdown 语法&#xff0c;例如 Typora 就需要手动开启 高亮 功能 Typora的使用&#xff1a; Typora中各种使用 - lyluoye - 博客园 (cnblogs.com) 标题 #…

数据库的存储过程、触发器、事件 实现(超精简)

一 存储过程 什么是存储过程 &#xff1a; 自己搜 和代码写的有什么区别&#xff1a; 没区别 为什么用存储过程&#xff1a; 快 例子 -- 创建 test名字的存储过程 CREATE PROCEDURE test(in idin INT) BEGIN-- 创建变量declare id int default 0;declare stopflag int defau…

爬虫015_python异常_页面结构介绍_爬虫概念介绍---python工作笔记034

来看python中的异常 可以看到不做异常处理因为没有这个文件所以报错了 来看一下异常的写法

【C++】C++回调函数基本用法(详细讲解)

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

【Flutter】【packages】simple_animations 简单的实现动画

package&#xff1a;simple_animations 导入包到项目中去 可以实现简单的动画&#xff0c; 快速实现&#xff0c;不需要自己过多的设置 有多种样式可以实现[ ] 功能&#xff1a; 简单的用例&#xff1a;具体需要详细可以去 pub 链接地址 1. PlayAnimationBuilder PlayAnima…

winform控件 datagridview分页功能

主要实现页面跳转、动态改变每页显示行数、返回首末页、上下页功能&#xff0c;效果图如下&#xff1a; 主代码如下&#xff1a; namespace Paging {public partial class Form1 : Form{public Form1(){InitializeComponent();}private int currentPageCount;//记录当前页行数…

ApplicationContext在Spring Boot中是如何创建的?

一、ApplicationContext在Spring Boot中是如何创建的&#xff1f; 1. SpringApplication ApplicationContextFactory有三个实现类&#xff0c;分别是AnnotationConfigReactiveWebServerApplicationContext.Factory、AnnotationConfigServletWebServerApplicationContext.Facto…

nginx动态加载配置文件的方法

1. main函数调用ngx_get_options函数 2. ngx_get_options(int argc, char *const *argv)中会解析用户输入命令。 case ‘s’: if (*p) { ngx_signal (char *) p; } else if (argv[i]) {ngx_signal argv[i];} else {ngx_log_stderr(0, "option \"-s\" requi…