Very unorthodox placement of if-else clauses in C for handling special cases
I would say that the strong argument against the first example is that the else block starts right below the if and can be confused with a then block at first sight.
It's not about the order of the clauses, but only about formatting.
This is has the same condition and clauses, but it's not ambiguous:
if( i &gt;= list-&gt;count )
    *result = 0;
else
{
    *result = i * 32 + 31;
    while( mask &gt;&gt; (*result % 32) ) (*result)--;
}

That said, I would personally prefer this formatting (though this second rewrite is less important and more subjective than the previous one):
if( i &gt;= list-&gt;count )
    *result = 0;
else {
    *result = i * 32 + 31;
    while( mask &gt;&gt; (*result % 32) )
        (*result)--;
}