C语言操作符2

【Win10/11】Windows电脑WiFi显示小地球/断网的解决方法 Windows WiFi小地球、网络连接中断、网络重置、无线网卡驱动、Win10/Win11网络修复 最近经常有粉丝留言问我,Windows 电脑突然连不上 WiFi,右下角网络图标显示成了“小地球 🌐”,或者干脆提示“未连接 - 没有可用的连接”。明明其他设备网络都正常,唯独自己的电脑断了。作为在互联网大厂混迹多年的前端程序员,我自己也碰到过这个问题。总结几种比较常见、亲测有效的解决方法,写出来供大家参考,希望能帮你快速恢复上网!问题原因推荐解决方法系统设置错乱使用网络重置功能驱动异常或冲突卸载后重启自动安装驱动驱动版本过旧手动更新网卡驱动实在不行考虑使用系统还原点或重装系统这几个方法中, 阅读详情

        在这篇文章中,主要讲解关系操作符、条件操作符、逻辑操作符,及其短路。

目录

一. 关系操作符

        注意1:相等运算符==与赋值运算符是两个不一样的运算符,不能混淆。

        注意2:多个关系运算符不宜连用

二. 条件操作符(也叫三目操作符)

 三. 逻辑操作符:&&,||,!

3.1逻辑取反运算符!(单目操作符)

3.2与运算符(双目操作符)

3.3或运算符(双目操作符)

四. 逻辑运算符的特点——短路


一. 关系操作符

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

  • <  小于运算符
  • >=  大于等于运算符
  • <=  小于等于运算符
  • ==  相等运算符
  • != 不相等运算符

关系表达式通常返回0或者1,表示真假 。关系表达式常用于if或while结构。(if:https://blog.youkuaiyun.com/wait___wait/article/details/134805824?spm=1001.2014.3001.5502)

(while:https://blog.youkuaiyun.com/wait___wait/article/details/135158422?spm=1001.2014.3001.5502)

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

20 > 12//返回1

12 > 20//返回0

printf("%d", 2 == 2);//打印1

        注意1:相等运算符==与赋值运算符是两个不一样的运算符,不能混淆。

有时候,可能会不小心写出下面的代码,它可以运行,但很容易出现意料之外的结果。(赋值运算符:https://blog.youkuaiyun.com/wait___wait/article/details/135242898?spm=1001.2014.3001.5502)

if (x = 3)...

上面示例中,意愿是x == 3,但不小心写成x = 3。这个式子表示对变量x赋值3,它的返回值是3,所以if判断总为真。

为了防止这种错误,可以将变量写在等号的右边。 这样的话,如果把==误写成=,编译器会报错,因为左操作符不能为常量

if (3==x)...

        注意2:多个关系运算符不宜连用

i  <  j  <  k 

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

 (i < j)< k

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

i < j && j < k 

 如:

//输入一个年龄,如果年龄在18岁-36岁之间,就输出青年
#include<stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (18 <= age && age <= 36)
	{
		printf("青年\n");
	}
	return 0;
}
//输入34
//打印青年

而如果我们这样写

//输入一个年龄,如果年龄在18岁-36岁之间,就输出青年
#include<stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (18 <= age <= 36)
	{
		printf("青年\n");
	}
	return 0;
}

这是因为,我们先拿18和age中存放的10比较,表达式18 <= 10为假,18 <= 10 的结果是0,再拿0和36 比较, 0 < 36 为真,所以打印了青年 。所以即使age是10的时候,也能打印青年。

二. 条件操作符(也叫三目操作符)

        与单目操作符和双面操作符类似,(单目操作符和双目操作符:https://blog.youkuaiyun.com/wait___wait/article/details/135242898?spm=1001.2014.3001.5502)三目操作符,需要接受三个操作数,形式如下:

exp1 ? exp2 :exp3

条件操作符的运算逻辑是:如果exp1为真,exp2计算,计算的结果是整个表达式的结果;如果exp1为假,exp3计算,计算的结果是整个表达式的结果。 

练习1:使用条件操作符表示下面代码的逻辑

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	if (a > 5)
	{
		b = 3;
	}
	else
		b = -3;
	printf("%d\n", b);
	return 0;
}
//改造后
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d", &a);
	b = a > 5 ? 3 : -3;
	printf("%d\n", b);
	return 0;
}

练习2:使用条件表达式实现找两个数的较大值

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int m = a > b ? a : b;
	printf("%d\n", m);
	return 0;
}

 三. 逻辑操作符:&&,||,!

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

  • !:逻辑取反运算符(改变单个表达式的真假)
  • &&:与运算符,就是并且的意思(全真则真,有假则假)
  • ||:或运算符,就是或者的意思(有真即真,全假即假)

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

3.1逻辑取反运算符!(单目操作符)

比如,我们有一个变量叫flag,如果flag为假,要做一个事情:

#include<stdio.h>
int main()
{
	int flag = 0;
	if (!flag)//if(flag == 0)
	{
		printf("do something\n");
	}
	return 0;
}

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

3.2与运算符(双目操作符)

        &&就是与运算符,使用方式是  a && b ,&&两边的表达式都是真的时候,整个表达式才为真,只要有一个是假,则这个表达式为假。(全真即真,有假即假)

比如:我们说月份3到5月是春天

#include<stdio.h>
int main()
{
	int month = 0;
	scanf("%d", &month);
	if (month >= 3 && month <= 5)//这里表达的意思就是month既要大于等于3,又要小于等于5,必须同时满足
	{
		printf("春季\n");
	}
}

3.3或运算符(双目操作符)

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

比如:我们说一年中,月份是12月或者1月或者2月是冬天

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

 练习:闰年的判断

输入一个年份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是闰年\n", year);
	}
	else
		printf("%d不是闰年\n", year);
	return 0;
}

四. 逻辑运算符的特点——短路

        C语言逻辑运算符总是先对左侧的表达式求只,再对右边的表达式求值。如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值,这种情况称为“短路”。

如前面代码:

if (month >= 3 && month <= 5)

        表达式中的&& 的左操作数是month >= 3,右操作数 month <= 5,当左操作数month >= 3 的结果是0的时候,即便不判断 month <= 5 ,整个表达式的结果也是0(不是春季)。

所以,对于 && 操作符来说,左边操作数的结果是0的时候,右边操作数就不再执行。(遇到假停)

结合前面的代码,来讨论||的短路:

if (month ==12 || month ==1 || month ==2)

        如果month == 12,则不再判断month是否等于1或者2,整个表达式的结果也是1(是冬季)。

所以,||操作符的左操作数的结果不为0时,就无需执行右操作数。(遇到真停) 

         像这种仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进行计算的运算称为短路求值。

(前置++和后置++:https://blog.youkuaiyun.com/wait___wait/article/details/135242898?spm=1001.2014.3001.5502)

练习:阅读代码,计算代码输出的结果

#include<stdio.h>
int main()
{
	int i = 0, a = 0, b = 2,c =3, d = 4;
	i = a++ && ++b && d++;//该表达式是逻辑表达式,&&操作符会短路:遇到假停。
	//a++先使用再加1,返回0后a=1,返回值0为假,后边的操作数不再执行,
	printf("a=%d b=%d c=%d d=%d i=%d", a, b,c, d, i);
	return 0;
}

运行结果: 

​


#include<stdio.h>
int main()
{
	int i = 0, a = 0, b = 2,c =3, d = 4;
	i = a++ || ++b || d++;// ||操作符会短路:遇到真停。
	//a++先使用再加1,返回0后a=1,程序继续执行
	// ++b先加1后使用,b+1=3后返回1,返回值为真,后边的操作数不再执行,
	printf("a=%d b=%d c=%d d=%d i=%d", a, b,c, d, i);
	return 0;
}

​


欢迎斧正!!!

期待你的​

​

【AI智能体】Codex 基于Git 实现项目管理实战操作详解 Codex 基于Git 实现项目管理实战操作详解 阅读详情

相关推荐

ESP-Mesh-Lite vs ESP-Mesh:如何选择适合你的物联网组网方案?

本文深入对比了乐鑫ESP-Mesh-Lite与ESP-Mesh两种物联网组网方案的核心差异。重点解析了ESP-Mesh-Lite分布式协议栈架构的优势,即每个节点拥有独立IP,可直接访问外部网络,极大简化了应用层开发。文章从网络架构、性能、开发体验及适用场景等多维度进行分析,为开发者根据项目需求(如分布式数据采集、智能家居或集中控制网络)选择最合适的方案提供了清晰的决策框架。

pluto的博客 815

C语言判断是否相等运算符

在数学运算中,描述两个数值相等,使用的符号是“=”,我也经常称这个字符为“等号”;例如,可以描述,如果a >b而且b > c,则 a > c;这就是一个数学式子的描述。但是,在C语言中,等号“=”用于做“赋值操作”,例如: inta = 10; 就是把10这个数值赋给变量a,那么,变量a中存储的数据就是10这个数值。那么,C语言中,描述两个对象相等,使用的符号是“= =”,就是两个等号“=”相连,用于判断连个对象是否相等。例如 a = = b表达式,就是判断 a与b的值是否相等,则..

LC的专栏 2万+

iPhone免越狱Git服务器搭建教程-iSH

iPhone免越狱Git服务器搭建教程

jts666的博客 4426

C语言:比较两个字符串是否相等

​ 讲解上面的程序: 定义了一个char(字符型)的指针变量str1,并且初始化为 "abc" 定义了一个char(字符型)的指针变量str2,并且初始化为 "abc" 通过strcmp进行比较两个字符串是否相同,如果相同返回0 ​......

xuetudexintai的博客 1万+

MATLAB下pdf文件操作读取示例

当遇到一些需要大量数据的项目,数据的读取与储存显得尤为重要。怎样把数据从其他格式的文件中读取,并运用到程序中是很多时候我们要解决的问题。对于平常的.txt,和.xlsx文件,MATLAB有对应的函数帮助读取,但是遇到pdf文件时MATLAB很难读取内容。本文以一个操作实例提供了一个从pdf文件中读取数据的方法。

UESTC 五高考3模拟的博客 6557

深入解析JESD204B Subclass 1中的SYSREF与LMFC同步机制

本文深入解析了JESD204B Subclass 1协议中的核心同步机制,重点阐述了SYSREF信号如何作为系统级参考,对齐所有设备内部的本地多帧时钟(LMFC),从而实现高速多通道数据采集系统中的确定性延迟。文章结合实战经验,详细说明了硬件设计、时序要点及软件配置流程,是解决多ADC芯片同步对齐问题的关键指南。

weixin_29271263的博客 397

C语言怎么才能让末尾没有多余的空格_C语言干货分享

各位DUTer们,全国计算机等级考试不久将至,不知各位同学复习得怎么样了?面对计算机二级C语言的程序操作题是不是无从下手啊?大家不要慌,我们在这里给大家准备了满满的干货。相信DUT们在家里看完一定会收获满满的,面对C语言也将充满了信心!计算机二级c语言考试由单项选择题 40 分(含公共基础知识部分 10 分)。操作题 60 分(包括程序填空题、程序修改题及程序设计题)构成,以下是操作题重...

weixin_39945531的博客 7865

【AI深究】合成数据(Synthetic Data)深度解析:原理、算法与工程实践——全网最详细流程|核心原理、主流方法、数学表达、工程实践与细节、未来趋势|GAN、VAE、语言模型LLM合成如GPT

大家好,我是爱酱。本篇延续将会系统梳理合成数据(Synthetic Data)的核心原理、主流方法、数学表达、工程实践与未来趋势,结合数学公式,帮助你全面理解这一AI建模的关键技术。 注:本文章含大量数学算式、详细例子说明及大量代码演示,大量干货,建议先收藏再慢慢观看理解。新频道发展不易,你们的每个赞、收藏跟转发都是我继续分享的动力!

AI人工智能爱酱~你的AI学习好帮手~ 4910

c语言ascii码表_新手小白整理C语言笔记备忘,带你十分钟理解C语言

一.C语言数据类型1.基本类型:整型、浮点型(单精度、双精度)、字符型和枚举类型;2.构造类型:数组类型、结构体类型和共用体类型;3.指针类型;4.空类型。二.数值数据的表示1.整数:十进制整数、八进制整数(012)、十六进制整数(0xf1)2.整数的存储空间:2个字节,即16个二进制位;整数的取值范围-2[15]~2[15]-1,即-32768(1000 0000 0000 0000)~3276...

weixin_39959569的博客 460

从病毒分析到安全研究:手把手教你用OD破解加壳程序的反调试机制

本文深入探讨了如何识别并绕过加壳程序的反调试机制,特别是针对使用IsDebuggerPresent等API检测的防护手段。通过实战案例和工具链配置,详细介绍了逆向工程中的关键技巧,包括内存补丁、硬件断点定位OEP等,帮助安全研究人员有效突破软件保护技术。

tgb345678的博客 823

暗黑破坏神2重制版 mod制作教程(一)

暗黑2重制版mod修改教程

hhhh2312的博客 7448

C语言中两个字符串比较是否相等

C语言中两个字符串比较是否相等

qq_61166353的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【C语言之操作符2】

万能操作符

2301_78107465的博客 1691

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C语言进阶(2)—————操作符详解

8进制的数字每一位是 0~7 的,0~7 的数字,各自写成2进制,最多有3个2进制位就足够了,比如7的二进制是111,所以在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算一个8进制位,剩余不够3个2进制位的直接换算。整数的2进制表示方法有三种,即原码、反码和补码,有符号整数的三种表示方法均有符号位和数值位两部分,2进制序列中,最高位的1位是被当做符号位,剩余的都是数值位。其实二进制也是一样的:2进制中满2进1,且每一位都是0~1的数字组成,那么 1101 就是二进制的数字了。

Ken7__0102的博客 794

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C语言—操作符2

此时表达式中相邻的操作符为乘法操作符和除法操作符,两个操作符的优先级相同,可以考虑结合性,乘法操作符和除法操作符的结合性是从左往右计算,所以表达式的结果为1;表达式中含有加法操作符和乘法操作符,由于乘法操作符的优先级比加法操作符的优先级高,所以表达式优先计算乘法操作符的两个操作数,后计算表达式的加法操作符,结果为17。表达式先执行a++表达式,a=a+1=2,再执行表达式b--,b=b-1=4,最后执行c=a+b=6,所以表达式最后的结果为6,输出打印:2,4,6,6。

2502_91437895的博客 652

C语言——操作符详解2

C语言操作符2

YT54936543的博客 1607

C语言:操作符详解2

我们来看例子使用逗号表达式也可以用来解决以下场景。

2402_84021550的博客 1107

c语言常用操作符(2)

​ 移位操作符分为 注:移位操作符的操作数只能是整数,同时移位操作符移动的是存储在内存中的二进制位(也就是补码) 同时移位操作符不要移动负数位,这个是标准未定义的。 1.

mljy.博客 2035

【C语言】操作符2(含操作符的应用)

定义:结构体的定义有两种方法:1、在创建结构体的时候在最后直接写出这个变量,注意后面的分号!!!2、和定义结构体有一点类似,使用struct关键字然后加上一个名字,然后再加上这个变量的 名字。初始化:结构体的初始化和数组差不多,也是使用大括号。第一个初始化就会按照结构体中的数据顺序的初始化,即第一个"zhangsan"就是name的,然 后20就是age的了,第二种就是指定初始化,这个就在要初始化的那个数据加.即可。

2302_81083101的博客 1349

c语言-操作符2

本篇文章介绍c语言中单目操作符、逻辑操作符、条件操作符、逗号表达式、下标引用操作符等。

pyc68的博客 572

操作符讲解2---C语言

C语言中重要的操作符知识。

muwithxi的博客 1089

【C语言所有操作符详解2】

表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类型,否则操作就无法进行。例如,在算术运算中,如果操作数的类型不一致,编译器会将较低等级的类型转换为较高等级的类型,以便进行运算。代码1在计算的时候,由于*比+的优先级高,只能保证,*的计算是比+早,在右操作数之前还是之后求值,所以结果是不可预测的,是有歧义 的。

caojunjia的博客 267

【C语言】 操作符详解(2)

紧接上文,我们将继续进行操作符的讲解。

m0_71731682的博客 1967

c语言操作符2

c语言操作符2

nie2459010516的博客 328

C语言初阶————操作符2

区别sizeof和strlen:①sizeof是操作符,不是函数 ②strlen是求字符串长度的函数,不是操作符。(一)单目操作符:只有一个操作数的操作符,上次介绍的基本上都是双目操作符(需要两个操作数)。例题:利用操作符使一个数的二进制的指定为取反,并再用操作符还原。(五)逗号表达式:用逗号隔开多个表达式,结果为最后一个表达式结果。表达式1为真则执行表达式2,如果表达式1为假则执行表达式3。前置--、++:先--或++,再使用。后置--、++:先使用,再--或++最后的结果为最后执行的表达式结果。

2401_83008139的博客 354

【C语言初阶】操作符详解(2)

【C语言初阶】操作符详解(2)

2401_84304834的博客 1775
上一篇: C语言之操作符1
下一篇: C语言之printf浅析
大力初奇迹
博客等级 码龄3年 1294粉丝 54原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值