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