c/c++语言开发共享是否有针对&=和| =的定义评估顺序?

如果你有一个返回整数的C函数,你可以写一个这样的语句:

MyInt &= MyFunc(); 

…我们使用按位AND赋值运算符。

问题是:即使MyInt等于零,MyFunc()仍然可以执行吗?

Likwise,如果我们使用按位OR赋值运算符(| =),那么MyFunc()总会被执行,即使MyInt被设置为全部吗?

换句话说:对于按位运算符,C是否允许延迟评估?

     MyInt &= MyFunc(); 

    相当于:

     MyInt = MyInt & MyFunc(); 

    该语言表明&运营商没有短路。 但是,如果MyInt为零,并且确定该函数没有副作用,则优化器可以生成不调用该函数的代码。 我怀疑任何编译器都会这样做,因为运行时测试可能会让它变得悲观。

    否。按位运算符不会短路。 无论MyInt的值如何,都保证MyFunc()执行。

      以上就是c/c++开发分享是否有针对&=和| =的定义评估顺序?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

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

      ctvol管理联系方式QQ:251552304

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

      (0)
      上一篇 2021年1月10日
      下一篇 2021年1月10日

      精彩推荐