At first glance, this appears to simplify to
if (a == 0)
    a = b;
However, if a is a NaN, this simplification gives different results.  Any comparison with a NaN is false, so the more complicated expression will assign b to a if a is zero or a NaN.
2
solved Need explanation of an expression