关于C语言的逻辑短路

    技术2022-05-20  41

    在C标准中,有这样的规定:在“exp1 && exp2” 中如果exp1为false,则不再计算exp2的值 在“exp1 ¦ ¦ exp2” 中如果exp1为true,则不再计算exp2的值 这种机制被称为”逻辑短路“,一是为了优化,更重要的是为了提高代码的可移植性,避免产生二义性但并不是所有的实现都支持这种机制比如如下的C代码:view plaincopy to clipboardprint?void cond(int a, int *p)   {       if (p && a > 0)           *p += a;   }  void cond(int a, int *p){ if (p && a > 0)  *p += a;} 命名为cond.c, 用如下命令编译成汇编语言文件:gcc -O2 -S cond.c得到如下的.s文件:view plaincopy to clipboardprint?.file   "cond.c"  .text   .p2align 4,,15   globl _cond   .def    _cond;  .scl    2;  .type   32; .endef   cond:   pushl  

    转载请注明原文地址: https://ibbs.8miu.com/read-2221367.html

    最新回复(0)