Nowadays there's no semantic difference between the two cases, as even the more simple optimization applied by compilers could disrupt the "intended execution flow".
Maybe 30 to 40 years ago there could have been some difference between the two choices, when the code generation step of the C compiler was quite adherent to the written code.
The actual difference is today in the syntax and style clarity.
So, while writing
while( *dst++=*src++ );
nowadays could generate the very same machine code as
for( i=0; src[i] != 0; i++ )
dst[i] = src[i];
dst[i] = '\0';
The latter could be in general much easier to read, as seen in
if( ! isOK() )
dontDoIt();
else
doIt();
and in
if( isOK() )
doIt()
else
dontDoIt();
But be assured, "clarity" is not an absolute value: it depends not just upon the "programming skills and taste" of the readers/reviewers, but also in the code itself.
Bottom line: make a choice of yours and stick with it for uniformity!