C语言的短路现象

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 ,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 ,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。 执行结果:


关于脉冲调制信号相位噪声的测试方法的分析和应用
5G的快速发展可以促进VR的发展吗?
索尼正式发布增强分析单元REA-C1000的新版固件Ver 5.0
如何确定降压电感以及输入和输出电容
楚江新材:拟使用募集资金向子公司实缴增资4.8亿元
C语言的短路现象
终于明白了,为何高性价比锐龙本更值得推荐
便携式太阳能跟踪器的制作
华为mate10上市在即:全面屏+麒麟970+莱卡三代双摄,能否对抗iPhone?
DC/DC开关电源的原理图
美团回应跑腿员携带客户14部全新的iPhone 12 Pro Max跑路
通过FPGA器件和RS编码器实现前向纠错系统的设计方案
英飞凌推出新的应用开发套件,简化和加速基于其8位元和16位微
HomeKit硬件标准公布,智能家居时代真正开启
三星PRO Endurance 128G闪存卡的优势之处
容联七陌云客服助力大地影院客服系统
双11来临,物流业迎来了一群新科技
关注智慧灯杆-智慧城市建设项目
CEVA公司CEVA-MM3000图像和视觉平台提供数字视频稳定器软件模块
几种基于深度学习的中文纠错模型