I prefer explicit tests unless the result inside the parentheses is a explicit boolean. The phrase "if (1)", while syntactically and semantically correct in terms of the language, is not logical. It should be true or false, not cast automatically.
I prefer readable logical code to less typing any day.
I also despise vehemently code of the form:
if (gotError == FALSE) ...
if (isComplete == TRUE) ...
If the boolean value is properly named (and it should be), the right way to do that is:
if (!gotError) ...
if (isComplete) ...
That's because (using reductio ad absurdum) boolVal == TRUE
is simply another boolean value, so where do you stop?
if (isComplete == TRUE) ...
if ((isComplete == TRUE) == TRUE) ...
if (((isComplete == TRUE) == TRUE) == TRUE) ...
if ((((isComplete == TRUE) == TRUE) == TRUE) == TRUE)...
And so on, ad infinitum.