|
|
Dann Corbit wrote:
>
> --- Module: foo.c (C)
> _
> printf("%d %d\n", n++, n);
> foo.c(8) : Warning 564: variable 'n' depends on order of evaluation
I wonder a bit about this one. Let's consider a simpler version:
#include <stdio.h>
int somefunc(int x)
{
printf("%d\n", x);
return x;
}
int main(void)
{
int x= 1;
somefunc(x++);
return 0;
}
Above, is it well defined that it will be printed "1"?
#include <stdio.h>
int somefunc(int x)
{
printf("%d\n", x);
return x;
}
int main(void)
{
int x= 1;
somefunc( (x++, somefunc(x)) );
return 0;
}
In the above, the expression (x++, somefunc(x)) is evaluated to 2, so I
assume it is guaranteed that it will print "2".
|
|