On Tue, 18 Apr 2006, falk at debian dot org wrote:

> > However, the evaluation of the 
> > arguments to printf may overlap and the order is unspecified, so there are 
> > many possible outputs from the program (but "3 2 1" and "3 1 1", for 
> > example, are not possible).
> 
> I don't understand why is "3 2 1" is not possible. How about "1 1 1"? Is
> this a bug in gcc after all?

"1 1 1" is possible: first evaluate func(3), then func(2), then func(1), 
then do all the dereferences.

To get "3 2 1", the initial "3" requires func(3) to be evaluated between 
the evaluation of func(1) and its dereference, so func(3) is evaluated 
after func(1); but likewise the final "1" requires func(1) to be evaluated 
after func(3).

-- 
Joseph S. Myers
[EMAIL PROTECTED]

Reply via email to