首页/文章/ 详情

C语言也会短路?

12分钟前浏览12
C语言短路现象算是C语言的基础吧,不过有时候代码写得不规范也容易引入一些bug,所以这些操作在工程师实践中尽量少用。
虽然下面找的例子比较简单,但如果后面是其他表达式,或许你并不会那么容易分辨。并且,你可能会斩钉截铁的说,我绝对不会这样编写我的代码,但你确定的同事不会这样?你的前同事不会?
好了,下面的案例来源于网络,仅供参考:
避坑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。

执行结果:

声明:


 
声明:文章来源网络。本号对所有原创、转载文章的陈述与观点均保持中立,推送文章仅供读者学习和交流。文章、图片等版权归原作者享有,如有侵权,联系删除。  

来源:硬件笔记本
电路电子UG
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-11-21
最近编辑:12分钟前
硬件笔记本
本科 一点一滴,厚积薄发。
获赞 157粉丝 46文章 665课程 0
点赞
收藏
作者推荐

EMC不过,这次败给了三极管

8050三极管在大约0.5V左右就开始从有Ic电流,在0.8V左右就基本可以工作在开关状态了问题描述公司之前做过的一个产品。产品在做EMC认证过程中,经常会出现信号指示灯乱闪烁的情况。信号指示灯的连接原理图如下。图 1:原设计中的指示灯原理图原因分析问题的原因定位比较明确,没有施加干扰的时候,信号指示灯是正常的,施加EMC干扰的时候,导致了乱闪,说明是由于我们在EMC防护上不到位。经过分析,我们主要在三极管的驱动电路上出了问题,工程师在设计的时候,以为三极管工作在开关状态下,只要给给基极足够的驱动电流就可以了。但是忽略了一个问题,三极管的导通所需的Vbe非常小,如下图2,8050三极管在大约0.5V左右就开始从有Ic电流,在0.8V左右就基本可以工作在开关状态了。也就是说虽然主芯片没有对外输出高电平,但是由于周围的其他干扰,也是可以导致三极管非正常导通的。图 2: 三极管Vbe与Ic的关系曲线图解决方案经过整改,我们主要采取以下的方案:将原来的R6修改为10K,增加一个下拉电阻3K,构成分压关系,当cpu输出为3.3V的时候,Vbe=0.76V,输出2V时,Vbe=0.46V准备开始导通,同时增加一个并联的0.1uF的电容,吸收部分干扰脉冲。经过EMC的实测,问题可以得以解决。图3: 整改后的方案总结三极管增加基极的下拉电阻有以下几个作用:1、如果主芯片没有工作,可以给三极管一个确定的电平,保持在关断状态下;2、提高三极管的导通电平,如果没有下拉电阻,三极管0.7V就可以导通,增加合适的下拉后,可以提高到2V甚至更高才能导通3、防止三极管受噪声信号的影响而产生误动作,使晶体管截止更可靠!4、防止输入电流过大,加个电阻可以分一部分电流,这样就不会让大电流直接流入三极管而损坏其。5、增加下拉以后,可以提供放电通道,可以提高三极管的放电速度。当三极管开关作用时,ON和OFF时间越短越好,为了防止在OFF时,因晶体管中的残留电荷引起的时间滞后,在B,E之间加一个R起到放电作用声明: 声明:文章来源网络。本号对所有原创、转载文章的陈述与观点均保持中立,推送文章仅供读者学习和交流。文章、图片等版权归原作者享有,如有侵权,联系删除。 来源:硬件笔记本

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈