c/c++语言开发共享C if语句带&& – 首先执行哪个函数?

如果我在C中有一个if语句,它看起来像:

if( function1() > 0 && function2() > 0 ){ //blah } 

哪个函数将首先执行并始终按该顺序执行?

    这里function1() 保证首先执行。

    &&运算符是一个短路运算符 。 除非function1()的结果大于零,否则甚至不会调用function1()

    从C99标准:

    与按位二元和运算符不同,&&运算符保证从左到右的评估; 在评估第一个操作数后有一个序列点。 如果第一个操作数比较等于0,则不计算第二个操作数。

    首先执行function1() ,如果结果小于或等于0,则根本不执行function2()

    function1 ,是的。 当且仅当前一个条件为true才会调用function2

    这被称为“短路”,并且它是必不可少的,例如对于这样的语句: if (p != 0 && *p == 'X')我们可以确定p如果为null则永远不会被解除引用。

    在这种特殊情况下,函数1将始终首先执行,因为您正在使用&&运算符。

    另外,如果function1()> 0,则根本不会调用function2。

    这将从左到右进行评估。 查看此信息以获取更多信息

    首先调用function1() 。 它不是暗示排序的if ,而是首先计算&& :left操作数,并且仅当左操作数返回非零值时才计算第二个操作数。

    在你的代码片段中, function1()将首先执行,而function2() 只有在第一个条件为true才会执行。

    您可以轻松检查出来:在每个函数中添加一些printf,让function1()返回1。

    需要了解更多c/c++开发分享C if语句带&& – 首先执行哪个函数?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享C if语句带&& – 首先执行哪个函数?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979422.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐