本文介绍了发生短路的C / C ++授权布尔运算符?和评估的订单?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请问ANSI标准的任务的逻辑运算符是短路,用C或C ++?

我很困惑,因为我记得K&放大器; R本书说你的code不应依赖这些操作是短路,因为他们可能不会。可能有人请指出哪里标准据说逻辑OPS总是短路?我是基于C最感兴趣++,还对C的答案将是巨大的。

我还记得读(不记得在哪里)的计算顺序没有严格的定义,所以你的code不应一名前pression内依赖或承担的功能将在一个特定的顺序执行:由一个语句的结束所有被引用的功能将被调用,但是编译器有自由选择最高效的订单

是否标准表明这一点前pression的计算顺序?

 如果(泛函()及和放大器; functionB()及和放大器; functionC())COUT<<HELLO WORLD;


解决方案

是的,都需要运营商短路和评估顺序 || &功放;&安培; 在C和C ++标准

C ++标准说(应该在C标准等同条款):

In C++ there is an extra trap: short-circuiting does NOT apply to types that overload operators || and &&.

It is usually not recommended to overload these operators in C++ unless you have a very specific requirement. You can do it, but it may break expected behaviour in other people's code, especially if these operators are used indirectly via instantiating templates with the type overloading these operators.

这篇关于发生短路的C / C ++授权布尔运算符?和评估的订单?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-19 12:24