> I'm running i386 -current of 13 May and ran into surprising behaviour
> from gcc. Consider the following code snippet:
>
> int i;
>
> i = 1;
> if (i += 1 == 2)
> printf("%d; should be 2\n", i);
>
> i = 1;
> if ((i += 1) == 2)
> printf("%d; should be 2\n", i);
>
> The output is:
>
> 1; should be 2
> 2; should be 2
>
> It seems gcc parses the += statement wrongly: "a += b == c" should be
> interpreted as something like "(a = a + b) == c", but instead gcc seems
> to interpret it as "a = (a + b == c)". That would explain why i equals 1
> in the first line of output.
>
> Would this be a bug in gcc or am I overlooking something?
== has higher precedence then += so the first
expression is parsed as ( i += ( 1 == 2 )).
--
Nikolai