Re: strange case of "if ((a & b))"

Justin Pryzby <pryzby@telsasoft.com>

From: Justin Pryzby <pryzby@telsasoft.com>
To: Bruce Momjian <bruce@momjian.us>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers@lists.postgresql.org
Date: 2021-08-18T19:23:18Z
Lists: pgsql-hackers
On Wed, Aug 18, 2021 at 03:15:21PM -0400, Bruce Momjian wrote:
> On Wed, Aug 18, 2021 at 01:28:56PM -0500, Justin Pryzby wrote:
> > > > 0002 is a bonus patch I found in my typos branch.  I will hold onto it for
> > > > later if nobody wants to deal with it.
> > > 
> > > I am ready to deal with this patch.  Should I apply it to master soon?
> > 
> > Thanks for looking at it.  I suggest not to apply 0002 - I'll resend it on
> > another thread with other, similar cleanups.
> 
> OK.
> 
> > However, I have another patch to clean up stuff like "? true : false", which
> > seems related to this patch (but maybe it should be applied separately).
> 
> Yes, that is odd.  I think it is related to the confusion that if ()
> compares non-zero(true) and zero(false), while booleans return only 1/0
> (no other values).  This explores that:
> 
> 	https://stackoverflow.com/questions/22489517/c-language-boolean-expression-return-value
> 
> Do you want me to consider this patch now?

Yes, please.
It may be helpful to dispose of the first patch first.

Thanks,
Justin



Commits

  1. Clean up more code using "(expr) ? true : false"

  2. Clean up some code using "(expr) ? true : false"