>> > By default I read  if (!functioncall()) as 'if the function call
>> > failed'.  I like the (strcmp(p, q) == 0) idiom because I don't fall
>> > into the trap of reading the statement as 'if the string comparison
>> > failed'.  It is the one case I can think of where I prefer an explicit
>> > comparison to zero.
>> 
>> De gustibus non est disputandum.
>> 
>> However, given strcmp is such a special case, I was used to the == 0
>> idiom as well.
>> However, the more I used the ! the easier it was to read it.
> 
> No.  The idea is that if you are comparing pointers or functions/variables
> that obviously return 0 or 1 (like isspace() or bflag or similar) then you
> can use !v and v.
> 
> If you are comparing anything else then you should explicitly check
> for it.  strcmp() has 3 classes of return values < 0, == 0 and > 0.
> 

Well, in this case, I usually I am only interested if the string is equal
or not, so I read !strcmp as if they are equal. I think in this case is
only personal taste, but I don't have problems with == 0 idiom.


Reply via email to