Question for ISO C standards gurus
Diego Novillo
dnovillo@redhat.com
Sat Mar 27 01:35:00 GMT 2004
On Thu, 2004-03-25 at 13:08, Dave Korn wrote:
> "Here is the complete list of all sequence points in C++:
>
> at the end of a full expression
>
> after the evaluation of all function arguments in a function call and before
> execution of any expressions in the function body
>
> after copying of a returned value and before execution of any expressions
> outside the function
>
> after evaluation of the first expression in a&&b, a||b, a?b:c, or a,b
>
> after the initialization of each base and member in the constructor
> initialization list "
>
So, the program below should print 5? It certainly doesn't with gcc 3.2
nor mainline:
int foo (int x)
{
return x;
}
main ()
{
int *p;
int a[2];
a[0] = 4;
a[1] = 5;
p = a;
printf ("%d\n", foo (*p++));
}
It will print 5 if I use pre-increment on 'p', which is what I would've
expected (I'm no language lawyer, though).
Diego.
More information about the Gcc
mailing list