This is a very trivial problem:
There are four boolean functions: a(), b(), c() and d(). I want to keep calling them in order until the first one returns true. instead of doing the traditional
if(!a()) {
if(!b()) {
if(!c()) {
d();
}
}
}
or
if(!a() && !b() && !c()) d();
I thought about writing the expression as a short-circuited evaluation.
(a() || b() || c() || d());
But I've never seen this test being done this way in a C/C++ code. Is there any problem with this approach that I'm missing?
Thanks.
The code you have written is valid. d() will only be evaluated if other boolean functions return false.
However the short-circuited evaluation is less readable, and error prone from a maintenance point of view, because a reader might not get understand it trivially.
They are equivalent, but the short-circuited evaluation solution could be less readable, especially if function names are long or accepts parameters.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With