c/3324: wrong operator priority
arminu@yahoo.com
arminu@yahoo.com
Thu Jun 21 04:36:00 GMT 2001
>Number: 3324
>Category: c
>Synopsis: wrong operator priority
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: wrong-code
>Submitter-Id: net
>Arrival-Date: Thu Jun 21 04:36:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: arminu@yahoo.com
>Release: 2.95-2, 2.95-3, 2.96, 3.0.1 20010620
>Organization:
>Environment:
mingw port (2.95-2, 2.95-3), RedHat Linux 7.1 gcc compiler (2.96-??), CodeSourcery online test compilation(3.0.1 20010620 )
>Description:
the prefix increment operator is not correctly evaluated in the following code:
int a[8];
int i = 4;
a[i] = ++i;
the last line is evaluated as
a[4] = 5;
instead of
a[5] = 5;
>How-To-Repeat:
void test(void)
{
int a[8] = {0,0,0,0,0,0,0,0};
int i = 4;
a[i] = ++i;
printf("\na[4] = %d\na[5] = %d\n", a[4], a[5]);
}
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-bugs
mailing list