This c code:
// begin ok.c
int bar(int a, int b, int c)
{
//if ((b = c) && (a == 0))
if (b = c)
{
return 0;
}
return 1;
}
// end ok.c
When compiled with
gcc -Wall -c ok.c
issues this warning:
ok.c: In function `bar':
ok.c:5: warning: suggest parentheses around assignment used as truth value
That is what I expect.
This code, however does not issue the warning:
// begin bad.c
int bar(int a, int b, int c)
{
if ((b = c) && (a == 0))
{
return 0;
}
return 1;
}
// end bad.c
gcc -Wall -c bad.c
(no output)
--
Summary: gcc fails to issue "warning: suggest parentheses around
assignment used as truth value"
Product: gcc
Version: 3.4.6
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: fritz at intrinsity dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32587