Mail Archives: djgpp/1998/06/05/16:15:17
> > #include <stdio.h>
> > void main(void)
> > {
> > int i = 1;
> > printf("%d %d %d", i, i++, i++);
> > }
> > Using DJGPP I got the output "3 2 1" which is wrong.
>
> The reason you got 3 2 1 is because some compilers parse from right to
> left (I suppose DJGPP does that) and you should never do such statement,
> it's a bad programming practice and can cause unstable results.
Yup. This is the correct response you should get. Arguements are
popped onto the stack right to left for function calls.
> > I also
> compiled this with
> Visual C++ 5 and the output was "1 1 1". > Can anyone help me solve this?
Then its VC at fault (gee, imagine that), sounds like its evaluating it
using the Pascal calling method, left to right, and not C/C++, right to
left.
--
Blaine Hodge
E-Mail: bhodge AT gpu DOT srv DOT ualberta DOT ca
WWW: http://www.ualberta.ca/~bhodge/
- Raw text -