首页 > 其他分享 >逻辑操作符的短路现象

逻辑操作符的短路现象

时间:2023-09-12 20:32:16浏览次数:30  
标签:逻辑 计算 ++ 短路 int 操作符 &&

(逻辑操作符的短路现象)

1.逻辑操作符

&& 逻辑与 || 逻辑或

&&是操作符两侧表达式同时为真时,才为真;只要有一个假,结果就为假 ||是操作符两侧表达式同时为假时,才为假;只要有一个真,结果就为真 这里十分容易理解,所以不多说


2.逻辑操作符的短路

这里看几个例子就可理解:

&&的短路

int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;
	//i = a++||++b||d++;
	printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);
	return 0;
}

这段代码输出什么? 在这里插入图片描述 解析: a++表达式的结果为0,因为逻辑与是有一个表达式为0,结果就为0,所以右边的式子不会进行运算 所以输出:a = 1,b = 2,c = 3,d = 4

这种现象叫:短路 &&操作符,左边为假,右边无需计算

现在把a的值改为1,再来看看

int main()
{
	int i = 0, a = 1, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;
	//i = a++||++b||d++;
	printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);
	return 0;
}

输出结果: 在这里插入图片描述 a++为真,继续计算,++b也为真,此时a++&&++b为真,继续计算d++ 这里所有的语句都被运算了


||的短路

int main()
{
	int i = 0, a = 1, b = 2, c = 3, d = 4;
	i = a++||++b||d++;
	printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);
	return 0;
}

结果: 在这里插入图片描述 a++的值为1,因为是||操作符,有一个为1,结果就为1,后面式子等于多少都无所谓,所以右边的式子不会计算

**对于||操作符,左边为1,右边的式子不进行计算。这也叫短路

int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++||++b||d++;
	printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);
	return 0;
}

在这里插入图片描述 a++值为0,继续计算,++b为3,所以a++||++b为真,所以后面的d++不进行计算

3.总结

  • &&的短路:左边为假,右边无需计算
  • ||的短路:左边为真,右边无需计算
  • 这些点十分容易理解,但是也容易被忽略,所以要细心读完此文

标签:逻辑,计算,++,短路,int,操作符,&&
From: https://blog.51cto.com/u_16237630/7448188

相关文章

  • 关于单位权图最短路的一些小思考
    关于单位权图最短路的一些小思考单位权图每条边权值都为\(1\)(或者全部相同也行)的图。最短路显然,单位全图的最短路不会经过同一个点,所以,跑单位权图的最短路要用BFS。所以我们得到一个处理单位全图的性质\(1\):用一个标记数组取标记哪个点有没有被走过,如果没有就标记并加入......
  • 登录时间逻辑
    1概述如下图,登录时间选择一个范围。2数据库表表名:sys_logininfo。字段:login_time。类型为datetime类型。 3前台代码F:\code\RuoYi-Vue-master\ruoyi-ui\src\views\monitor\logininfor\index.vue搜索框里的登录日期:<el-form-itemlabel="登录时间"><......
  • 逻辑回归入门介绍
    本文所有内容整理自网络。完整内容可以点击这里获取:完整资料下载地址Logistic回归是一种监督式机器学习算法,主要用于分类任务,其目标是预测一个实例属于给定类别的概率。它是一种统计算法,用于分析一组自变量与依赖的二进制变量之间的关系。它是一种强大的决策工具,例如用于判断电子邮......
  • 视频监控平台EasyCVR分组批量绑定/取消通道功能的后端代码设计逻辑介绍
    视频监控平台/视频存储/视频分析平台EasyCVR基于云边端一体化管理,可支持视频实时监控、云端录像、云存储、磁盘阵列存储、回放与检索、智能告警、平台级联等功能。安防监控平台在线下场景中应用广泛,包括智慧工地、智慧工厂、智慧校园、智慧社区等等。在前期的文章中我们介绍了关于......
  • 视频监控平台EasyCVR分组批量绑定/取消通道功能的后端代码设计逻辑介绍
    视频监控平台/视频存储/视频分析平台EasyCVR基于云边端一体化管理,可支持视频实时监控、云端录像、云存储、磁盘阵列存储、回放与检索、智能告警、平台级联等功能。安防监控平台在线下场景中应用广泛,包括智慧工地、智慧工厂、智慧校园、智慧社区等等。在前期的文章中我们介绍了......
  • 视频监控平台EasyCVR分组批量绑定/取消通道功能的后端代码设计逻辑介绍
    视频监控平台/视频存储/视频分析平台EasyCVR基于云边端一体化管理,可支持视频实时监控、云端录像、云存储、磁盘阵列存储、回放与检索、智能告警、平台级联等功能。安防监控平台在线下场景中应用广泛,包括智慧工地、智慧工厂、智慧校园、智慧社区等等。在前期的文章中我们介绍了......
  • Postgresq l 数据库查询格式为jsonp的列,怎么查询其值属性 | ->> 操作符
    要查询PostgreSQL数据库表中的JSONP列(假设列名为props)中是否包含特定条件的记录,可以使用JSONB函数和操作符进行查询。JSONP列通常存储为JSONB类型。假设表结构如下:CREATETABLEyour_table(idserialPRIMARYKEY,propsjsonb);在这个表中,props列存储......
  • PostgreSQL数据库从入门到精通系列之六:深入理解逻辑复制槽,创建逻辑复制槽,删除逻辑复制
    PostgreSQL数据库从入门到精通系列之六:深入理解逻辑复制槽,创建逻辑复制槽,删除逻辑复制槽一、逻辑复制槽二、创建逻辑复制槽三、删除逻辑复制槽一、逻辑复制槽在PostgreSQL中,逻辑复制槽是一种用于实现逻辑复制的功能。逻辑复制槽允许将源数据库的更改流式传输到目标数据库,并使目标......
  • DC逻辑综合工具简介-Design Compiler
    逻辑综合:代码转变为网表FPGA:代码转变为FPGA内部的数字单元在进行综合的时候往往会使用一些脚本工具1.目标RTL--书写完成后,输入到DC,复杂的RTL设计,通常是层次化设计综合库--使用的工艺库,比如台积电5nm工艺,设计约束和技术文件了解命令,掌握分析报告的方法2.必......
  • JavaScript:逻辑运算符
    与(&&)、或(||)&&在JavaScript中,A&&B是一个逻辑与运算,其执行逻辑如下:如果表达式A的结果为假值(例如false、null、undefined、0、NaN或空字符串""),则整个表达式A&&B立即返回A的值,而不会继续执行B。如果表达式A的结果为真值(例如非空字符串、非零数值、对象或函......