<div dir="ltr">`while (a = foo())` is often a typo for `while (a == foo())`. Having a warning for this is useful, and it's a pretty established pattern to use duplicate parens if the assignment is in fact intended (`while ((a = foo()))`). In fact, clang even warns in the reverse case if you use the double parens with a comparison: `while ((a == foo()))` warns as well.<div><br></div><div>If you don't like this warning, can't you just build with -Wno-parentheses?<br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 11, 2015 at 11:09 PM, Daniel Marjamäki <span dir="ltr"><<a href="mailto:Daniel.Marjamaki@evidente.se" target="_blank">Daniel.Marjamaki@evidente.se</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Hello!<br>
<br>
This is a RFC.<br>
<br>
I wonder what you think about trying to avoid a compiler warning for such code:<br>
<br>
        while (c = *str++) {<br>
                *p++ = (c >= 'A' && c <= 'Z') ? (c - 'A' + 'a') : c;<br>
        }<br>
<br>
Output:<br>
<br>
a.c:3:11: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]<br>
        while (c = *str++) {<br>
               ~~^~~~~~~~<br>
a.c:3:11: note: place parentheses around the assignment to silence this warning<br>
        while (c = *str++) {<br>
                 ^<br>
               (         )<br>
a.c:3:11: note: use '==' to turn this assignment into an equality comparison<br>
        while (c = *str++) {<br>
                 ^<br>
                 ==<br>
1 warning generated.<br>
<br>
<br>
<br>
I would personally recommend that it is avoided in while if there is just an assignment and rhs is a nonconstant expression.<br>
<br>
Best regards,<br>
Daniel Marjamäki<br>
<br>
..................................................................................................................<br>
Daniel Marjamäki Senior Engineer<br>
Evidente ES East AB  Warfvinges väg 34  SE-112 51 Stockholm  Sweden<br>
<br>
Mobile:                 +46 (0)709 12 42 62<br>
E-mail:                 <a href="mailto:Daniel.Marjamaki@evidente.se">Daniel.Marjamaki@evidente.se</a><br>
<br>
<a href="http://www.evidente.se" rel="noreferrer" target="_blank">www.evidente.se</a><br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div></div></div>