Turn off || operator optimization

  • A+

Is there any option in VS C++ 2017 so that when it builds the following program both f() and g() are called?

#include <iostream> using namespace std; bool f() {     cout << "f" "/n";     return true; } bool g() {     cout << "g" "/n";     return false; } int main() {      if (f() || g())         cout << "hello";     cin.ignore(1); } 


No there is not, this behavior (short-circuiting) is fundamentally part of logical operators.

What you can do instead is use the bitwise or operator |. But make sure to add a comment stating that this is not a mistake but on purpose!

In any case, if your function calls are not as simple as f() you should consider instead introducing a separate variable (or variables) to make it more obvious what your code is doing (calling two functions unconditionally, then using both their return values).


:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: