C语言—逻辑运算符中的短路求值

在利用 && 和 || 等操作运算符进行逻辑运算时,只要最终的运算结果可以确定,运算就终止。

比如:
a=3,b=3,那么(a3)&&(b=3),因为两边均为真,所以与运算&&结果为真;
a=3,b=3,那么(a3)||(b=3),因为左边已经为真,无论右边是否为真,或运算||结果都为真,所以(a3)运算完后结果确定,运算到此结束,不需要再去判断(b=3)。

c 复制代码
#include <stdio.h>
int main() {
	int a = 3, b = 3;

	(a = 4) && (b = 5);
	 printf("a的值为%d, b 的值为%d\n",a,b);		 
	(a = 1)||(b = 7);
	printf("a 的值为%d, b 的值为%d\n", a, b);
	// system("pause");

	return 0;
	
}
c 复制代码
a 的值为4, b 的值为5
a 的值为1, b 的值为5
请按任意键继续. . .

(a = 1)||(b = 7);该语句触发短路求值,语句中的(b = 7)并没有执行到,所以b还是5。

相关推荐
折哥的程序人生 · 物流技术专研9 小时前
Java面试85题图解版 · 特别篇:2026后端高频面试题复盘(算法底层逻辑+高并发架构设计全解析,附Java实战代码)
java·网络·数据库·算法·面试
玖玥拾10 小时前
C/C++ 基础笔记(十四)多态与模板编程
c语言·c++·多态·模板
想吃火锅100510 小时前
【leetcode】14.最长公共前缀js
算法·leetcode·职场和发展
云絮.12 小时前
数据库操作
数据库·mysql·算法·oracle
小林ixn12 小时前
LeetCode 206. 反转链表(迭代 + 递归详解)
算法·leetcode·链表
凡人叶枫12 小时前
Effective C++ 条款17:以独立语句将 newed 对象置入智能指针
java·linux·开发语言·c++·算法
菜鸟‍14 小时前
LeetCode 1 27 和 704 || 两数之和 移除元素 二分查找
算法·leetcode·职场和发展
caimouse14 小时前
Reactos 第1章 概述
c语言·开发语言·架构
退休倒计时15 小时前
【每日一题】LeetCode 142. 环形链表 II TypeScript
算法·leetcode·链表·typescript
啊森要自信15 小时前
【GUI自动化测试】控件、鼠标键盘操作与多场景自动化
c语言·开发语言·python·adb·ipython