On Mon, Nov 17, 2014 at 11:18:36PM +0100, FRIGN wrote:
> On Mon, 17 Nov 2014 14:10:49 -0800
> Bobby Powers <bobbypow...@gmail.com> wrote:
> 
> > 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.

On a side note here, for a failing syscall or similar, I think the
idea is to check for < 0 rather than == -1.  I am not opposed to the
latter except that is already used less frequently in sbase.

Reply via email to