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

Reply via email to