Multiple assignment

Steven Schveighoffer schveiguy at yahoo.com
Fri Feb 25 19:26:14 PST 2011


On Fri, 25 Feb 2011 21:10:59 -0500, Jonathan M Davis <jmdavisProg at gmx.com>  
wrote:

> On Friday, February 25, 2011 17:31:36 Ali Çehreli wrote:
>> On 02/25/2011 05:09 PM, bearophile wrote:
>>  >      int j;
>>  >      int[2] y;
>>  >      y[j] = j = 1;
>>
>> I think that's undefined behavior in C and C++. It is not defined
>> whether j's previous or past value is used in y[j].
>>
>> I would expect the situation be the same in D.
>
> No, that should be perfectly defined. What's undefined is when you do  
> something
> like func(j, y[j]). The evaluation order of the function arguments is  
> undefined.
> However,  the evaluation order when dealing with an assignment should be  
> defined.
> I _could_ be wrong about that, but there's no question that the  
> assignments
> themselves are guaranteed to be done in right-to-left order.

Let me fix that for you:

func(j++, y[j])

-Steve


More information about the Digitalmars-d-learn mailing list