Prefer if(x !=0) over if(x) for float, int values?

Viewed 190

In C++, I want to test values passed to a function for being non-zero, and base some behavior on that condition.

e.g.:

void do_something(float x){
    if(x)          //        <-- prefer this format?
        do_a();
    else
        do_b();
}

vs:

void do_something(float x){
    if(x != 0)        //     <-- or this format?
        do_a();
    else
        do_b();
}

other forms:

void do_something(int x){
    x? do_a() : do_b();      //  <-- prefer this?
    x!=0? do_a() : do_b();   //  <-- or this?
}

Are both of these 'well formed', or is there a reason that either would be undefined behavior in some case?

I tested on godbolt.org, and both forms produce the exact same assembly code. I tested with int, float, ternary operator and if(), and in all cases the code looked the same for the two forms.

I currently tend to use the if(x != 0) for float/double, and if(x) for int, somewhat due to the complexities of NaN, and other special values in the floating point value.

0 Answers
Related