C语言中的短路现象

2023-10-29

短路现象1

比如有以下表达式

 a && b && c

只有a为真(非0)才需要判断b的值;
只有a和b都为真,才需要判断c的值。

举例

求最终a、b、c、d的值。

main()
{
	int a,b,c,d;
	
	a = 0; 
	b = 1; 
	c = 2;
	d = a++ && b++ && --c;
	
	printf("a=%d b=%d c=%d d=%d\n",a,b,c,d);
}

因为a++是先判断a的值再自加,而a初始值为0, 所以(a++)为假,由短路现象可知&&后面式子b++和–c就都不会执行;
对于赋值语句,是先将a的值赋值给d,然后再自加,所以d的值为0,a最终为1。

执行结果:

短路现象2

比如有以下表达式

a || b || c

只要a为真(非0)就不必判断b和c;
只有a为假,才需要判断b的值;
只有a和b都为假,才有必要判断c的值。

举例

求最终a、b、c、d的值;

main()
{
	int a,b,c,d;
	
	a = 0; 
	b = 1; 
	c = 2;
	d = a++ || b++ || --c;
	
	printf("a=%d b=%d c=%d d=%d\n",a,b,c,d);
}

因为a++是先判断a的值再自加,而a初始值为0, 所以(a++)为假,由短路现象可知,还需要继续判断 || 后面的表达式b++,b++要先判断b的值,b为1,所以b++为真,由短路现象可知,后面的式子–c就不在执行;
对于赋值语句,不再是将a的值赋值给d,而是将b先赋值给d然后a和b再自加,所以d的值为1,a最终为1,b最终为2。

执行结果:

更多linux知识,请关注 一口Linux

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言中的短路现象 的相关文章

随机推荐

  • elasticsearch初识

    初识elasticsearch 了解ES elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎 具备非常多强大功能 可以帮助我们从海量数据中快速找到需要的内容 例如 在GitHub搜索代码 在电商网站搜索
  • mysql没开启binlog恢复删除表_无全量备份、未开启binlog日志,利用percona工具恢复delete的数据...

    当我们忘记做全量备份时 并且没有开启binlog 并执行了delete from sbtest 数据全部丢失 要想恢复是很有难度的 今天 利用Percona Data Recovery Tool for InnoDB工具 仅支持InnoDB
  • Dubbo(二)详细介绍

    转自 https www cnblogs com juncaoit p 7686510 html 1 背景 随着互联网的发展 网站应用的规模不断扩大 常规的垂直应用架构已无法应对 分布式服务架构以及流动计算架构势在必行 亟需一个治理系统确保
  • Service的两种启动方式之间的比较与区别

    在Android中 有两种主要的方式可以启动Service 启动式启动和绑定式启动 1 启动式启动 Start Service 使用 startService 方法启动Service Service在后台运行 独立于启动它的组件 如Acti
  • spark读取hive

    spark读取hive是最简单的 构造一个sparksession对象 直接执行SQL就得读取 然后直接insert就能写入 因为spark客户端配置了你的hive数据库的信息 所以能够直接读取hive数据库 spark SparkSess
  • AI绘图实战(五):放大并修复老照片、马赛克照片、身份证件照

    S 你安装stable diffusion就是为了看小姐姐么 I 当然不是 当然是为了公司的发展谋出路 预先学习 安装及其问题解决参考 Windows安装Stable Diffusion WebUI及问题解决记录 运行使用时问题 Windo
  • 一根网线两台电脑传输文件

    用两个网线连接两台电脑 确保网线连接没有问题 打开网络共享中心 然后打开更改适配器设置 选择以太网 右键属性 4 双击 Internet协议版本4 TCP IPv4 然后进行如下设置 在另一台电脑上进行上述一样的操作 只是IP地址的设置不同
  • android编程中遇到的关于 java.lang.NullPointerException错误的原因及解决办法

    LogCat中的错误提示如下 04 29 09 43 23 390 E AndroidRuntime 24967 FATAL EXCEPTION main 04 29 09 43 23 390 E AndroidRuntime 24967
  • 创建型模式5之3-Singleton单例模式的八种写法比较

    单例模式的八种写法比较 单例模式是最常用到的设计模式之一 熟悉设计模式的朋友对单例模式都不会陌生 一般介绍单例模式的书籍都会提到 饿汉式 和 懒汉式 这两种实现方式 但是除了这两种方式 本文还会介绍其他几种实现单例的方式 让我们来一起看看吧
  • 打发时光的102个网站

    1 看看自己具有哪个大明星的脸型 http www play analogia com cgi bin index 2 超有意思的Flash网站 虚拟办公 http agencynet com 3 亲自动手给美女画纹身 http www c
  • nginx 详解反向代理负载均衡

    什么是反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器 使用这种加速模式显然可以提升静态网页的访问速度 因此也可以考虑使用这种技术 让代理服务器将请求 均匀转发给多台内部Web服务器之一上 从而达到负载均衡的目的 这种代理
  • 【blender】材质球参数及各种问题

    目录 材质设置 1 共用一种材质 但是不同颜色 2 关联材质 3 无法绘制贴图 4 材质保存为资产 5 材质描边 材质设置 1 玻璃 1 共用一种材质 但是不同颜色 物体信息节点 gt 仅需改变物体颜色即可 2 关联材质 ctrl L 3
  • 网络安全——命令执行漏洞概述

    一 命令执行漏洞概述 1 基本定义 命令执行漏洞是指攻击者可以随意执行系统命令 分为远程命令执行 远程代码执行 和系统命令执行 2 原理 程序应用有时候需要调用一些执行系统命令的函数 如PHP中的system exec shell exex
  • SpringCloud组件之断路器Hystrix(hoxton版本)

    1 Hystrix 简介 在微服务架构中 根据业务来拆分成一个个的服务 服务与服务之间可以相互调用 RPC 在Spring Cloud可以用RestTemplate Ribbon和Feign来调用 为了保证其高可用 单个服务通常会集群部署
  • WinForm中如何实现panel和SplitContainer相结合进行布局呢

    相信大家都会在winform应用程序中进行布局 通常我们也会使用一下这种布局 如图 以上布局分别采用了Panel 黑色区域 和SplitContainer控件 白色区域 这布局相信大家耳熟能详了 比如VS2010不就是典型这样布局吗 但是需
  • 西瓜书之误差逆传播公式推导、源码解读及各种易混淆概念

    关键词 反向传播 BP caffe源码 im2col 卷积 反卷积 上池化 上采样 公式推导 以前看到一长串的推导公式就想直接跳过 今天上午莫名有耐心 把书上的公式每一步推导自己算一遍 感觉豁然开朗 遂为此记 sigmoid函数求导比rel
  • 最小二乘拟合,L1、L2正则化约束

    最小二乘法 又称最小平方法 是一种数学优化技术 它通过最小化误差的平方和寻找数据的最佳函数匹配 利用最小二乘法可以简便地求得未知的数据 并使得这些求得的数据与实际数据之间误差的平方和为最小 从维基百科中摘取的最小二乘的拟合曲线 解法 其中Y
  • TSI系统测量参数之:热膨胀

    一 TSI系统测量参数 1 轴向位移 2 盖振或瓦振 3 偏心 4 键相 5 零转速 6 轴向振动 7 相对热膨胀 胀差 8 绝对热膨胀 缸胀 二 各参数作用 4 绝对热膨胀 汽轮机在开机过程中由于受热使其汽缸膨胀 如果膨胀不均匀就会使汽缸
  • 辅助汇编学习记录2

    通用寄存器 EAX EBX ECX EDX ESI EDI ESP EBP 它 们 的低 16 位就是 8086 的 AX BX CX DX SI DI SP BP 它们的含义如下 EAX 累加器 EBX 基址寄存器 Base ECX 计数
  • C语言中的短路现象

    短路现象1 比如有以下表达式 a b c 只有a为真 非0 才需要判断b的值 只有a和b都为真 才需要判断c的值 举例 求最终a b c d的值 main int a b c d a 0 b 1 c 2 d a b c printf a d