0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言中的短路现象

Q4MP_gh_c472c21 来源:一口Linux 作者:土豆居士 2020-09-29 14:39 次阅读

短路现象1

比如有以下表达式

a&&b&&c

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

举例

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

main() { inta,b,c,d; a=0; b=1; c=2; d=a++&&b++&&--c; printf("a=%db=%dc=%dd=%d ",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() { inta,b,c,d; a=0; b=1; c=2; d=a++||b++||--c; printf("a=%db=%dc=%dd=%d ",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。

执行结果:

-END-

来源 | 一口Linux

作者 | 土豆居士

原文标题:C语言中的短路现象

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7620

    浏览量

    138903

原文标题:C语言中的短路现象

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

    技术干货驿站 ▏深入理解C语言:嵌套循环与循环控制的底层原理

    大家好!在上一节中,我们学习了C语言中的基本循环语句,如for、while和do...while循环。今天,我们将进一步探讨嵌套循环和循环控制,这些技巧可以帮助我们实现更复杂的逻辑操作。无论是处理
    的头像 发表于 02-21 18:26 188次阅读
    技术干货驿站  ▏深入理解<b class='flag-5'>C</b><b class='flag-5'>语言</b>:嵌套循环与循环控制的底层原理

    EE-62:在C语言中访问短字内存

    电子发烧友网站提供《EE-62:在C语言中访问短字内存.pdf》资料免费下载
    发表于 01-07 14:02 0次下载
    EE-62:在<b class='flag-5'>C</b><b class='flag-5'>语言中</b>访问短字内存

    EE-128:C语言中的DSP:从C调用汇编类成员函数

    电子发烧友网站提供《EE-128:C语言中的DSP:从C调用汇编类成员函数.pdf》资料免费下载
    发表于 01-07 13:48 0次下载
    EE-128:<b class='flag-5'>C</b><b class='flag-5'>语言中</b>的DSP:从<b class='flag-5'>C</b>调用汇编类成员函数

    C语言中申请的堆内存能不能自动释放

    C语言中申请的堆内存能不能自动释放?每次都要手动 free 太麻烦,也容易忘记。 学过 C++ 的同学,应该首先能想到智能指针。 但是这是C语言
    的头像 发表于 11-27 09:33 292次阅读

    C语言中的头文件能不能重复包含

    C语言中的头文件能不能重复包含? 比如代码写成这样,stdio.h 连续包含了两次。 #include #include int main(){ printf("helloworld
    的头像 发表于 11-26 17:19 345次阅读

    技术干货驿站 ▏深入理解C语言:掌握C语言条件判断,从if到switch的应用

    在编程中,条件判断语句是控制程序流程的核心元素之一。它们使得程序能够根据不同的输入和状态,做出相应的决策。特别是在C语言中,条件判断语句的使用极为广泛,涵盖了从简单的if语句到更复杂的switch
    的头像 发表于 11-09 01:10 556次阅读
    技术干货驿站 ▏深入理解<b class='flag-5'>C</b><b class='flag-5'>语言</b>:掌握<b class='flag-5'>C</b><b class='flag-5'>语言</b>条件判断,从if到switch的应用

    C语言中的socket编程基础

    Socket编程简介 Socket是一种通信机制,允许程序之间进行通信。在C语言中,socket编程是网络编程的基础。通过使用socket,程序可以发送和接收数据,实现不同计算机之间的通信
    的头像 发表于 11-01 16:51 677次阅读

    C语言与Java语言的对比

    C语言和Java语言都是当前编程领域中的重要成员,它们各自具有独特的优势和特点,适用于不同的应用场景。以下将从语法特性、内存管理、跨平台性、性能、应用领域等多个方面对C
    的头像 发表于 10-29 17:31 657次阅读

    C语言中最常见的宏定义写法

    如果让你用C语言写个宏定义,我相信大部分同学顺手就能写出define。
    的头像 发表于 10-28 11:12 522次阅读

    电源变压器短路会出现什么现象

    电源变压器短路是指电路中有两个本来不应该直接相接的线路出现了导通状态,这会导致电源电压骤降或电源短路过流,从而对电子设备造成损坏。以下是对电源变压器短路现象的详细分析,涵盖其表现、原因
    的头像 发表于 10-21 17:33 1938次阅读

    c语言中从左到右结合怎么看

    C语言中,操作符的结合性(Associativity)是指当操作符在表达式中连续出现时,它们如何与操作数结合的顺序。对于大多数二元操作符(即需要两个操作数的操作符),C语言遵循两种基
    的头像 发表于 08-20 11:42 1227次阅读

    技术干货驿站 ▏深入理解C语言:基本数据类型和变量

    C语言中,数据类型和变量是编程的基础,也是理解更复杂概念的关键。数据类型决定了变量的内存分配、存储范围和操作方式,而变量则是存储数据的容器。本篇文章将从基本数据类型和变量两个方面,带你深入了解C
    的头像 发表于 07-26 17:53 2390次阅读
    技术干货驿站 ▏深入理解<b class='flag-5'>C</b><b class='flag-5'>语言</b>:基本数据类型和变量

    c语言怎么做可视化界面

    介绍如何使用C语言开发可视化界面,包括所需的库、工具和开发步骤。 选择合适的图形库 为了在C语言中创建可视化界面,我们需要选择一个合适的图形库。以下是一些流行的
    的头像 发表于 06-06 10:46 2835次阅读

    C语言中,同一个函数能不能被定义两次?

    稍微有点C语言基础的同学,一定知道不能这样做。
    的头像 发表于 05-11 18:27 2048次阅读

    帮你避雷 C语言所谓的短路现象~

    C语言短路现象算是C语言的基础吧,不过有时候代码写得不规范也容易引入一些bug,所以这些操作在工
    的头像 发表于 03-27 08:09 496次阅读
    帮你避雷 <b class='flag-5'>C</b><b class='flag-5'>语言</b>所谓的<b class='flag-5'>短路</b><b class='flag-5'>现象</b>~