assignment: left-to-right or right-to-left evaluation?

Georg Wrede georg.wrede at iki.fi
Fri May 15 17:24:12 PDT 2009


bearophile wrote:
> Georg Wrede:
> 
>> arra[i] = arrb[i++];
>> arra[i++] = arrb[i];
>> I'm not sure that such dependences are good code.
>> By stating a definite order between lvalue and rvalue, you
>> would actually encourage this kind of code.
> 
> I agree that putting such things in code is bad, but nowadays the
> solution adopted by C is Just Wrong. To help avoid bugs from your
> programs the language has to avoid undefined behaviors (this is one of
> the lessons of Java).

If Walter had ulimited time, the of course I'd favor either defining the 
precedence, or then enforcing errors on them, and not leaving them 
undefined. Or, probably, with Walter's unlimited time, I'd vote for a 
system that is the Theoretically Best mix of programming praxis and 
compiler enforcement.

> So the solutions are to define such behaviors as Andrei suggests, or
> to forbid such code. I can accept both ways.
>
> I am used to Python and I think I can appreciate the Python solution
> better, but the Java solution too is better than having undefined
> behavior in a modern language.



More information about the Digitalmars-d mailing list