I think your variant is cleaner: hiding function call side-effects in conditionscan be a fragile thing to do. We want constant expressions with no side-effects - so if functions are called they should be constant functions as well.

Code compactness isn't everything - if it was we'd be using C to the max to create unreadable compound expressions all the time.