On Saturday, 7 April 2018 at 14:28:05 UTC, kdevel wrote:
On Saturday, 7 April 2018 at 09:56:43 UTC, Jonathan M Davis wrote:
         true?stt="AA":stt="BB";    <<<<-----///Out:BB

[...]

Assignment takes precendence over the ternary operator.

That's not true. Not in D and not in C/C++

The odd man out is C++ [1], assignment has higher precedence because of right to left evaluation. Do not mix it with C please. All other C derived languages have indeed higher precedence for ternary than assignment: C [2], java [3], C# [4] and D [5].

[1]: http://en.cppreference.com/w/cpp/language/operator_precedence
[2]: http://en.cppreference.com/w/c/language/operator_precedence
[3]: https://introcs.cs.princeton.edu/java/11precedence/
[4]: https://www.tutorialspoint.com/csharp/csharp_operators_precedence.htm
[5]: https://wiki.dlang.org/Operator_precedence

https://wiki.dlang.org/Operator_precedence
http://en.cppreference.com/w/c/language/operator_precedence#cite_note-2

So, no, I don't think that it is. Putting parens around the assignment expressions makes it print AA.

It should not matter if there are parens around the assignment.

As it stands, it evaluates both assignment expressions before evaluating the ternary operator.

That is not true in C/C++, let me quote from a C standard (draft), § 6.1.5 conditional operator:

Stop mixing C with C++ they are really 2 very different beasts (one is a programming language, the other is Cthulu :-)

<snip>

Reply via email to