conditionals often include short circuit operators. so, given this example:
if ( a=func(x) && b=func(y) )
{
// do this
}
it may not be immediately obvious, but the second assignment would only occur if the first returned >0, and if func(y) had other side effects that you were expecting, they would not happen either.
in short, if you know what you are doing and understand the side effects, then there is nothing wrong with it. however you musts consider the possibility that someone else may be maintaining your code when you're gone and they might not be as experienced as you.
also, future maintainers may think you intended the following:
if ( a==func(x) && b==func(y) ) ...
if they "fix" your code, the actually break it.