On Tuesday, 19 September 2017 at 18:34:13 UTC, Brad Anderson
wrote:
On Tuesday, 19 September 2017 at 18:17:47 UTC, jmh530 wrote:
On Tuesday, 19 September 2017 at 17:40:20 UTC, EntangledQuanta
wrote:
Thanks for wasting some of my life... Just curious about who
will justify the behavior and what excuses they will give.
Pretty sure it would be exactly the same thing in C...
It is (and Java and C# and pretty much every other C style
language though the nicer implicit conversion rules means it
gets caught more easily). It is a big source of programmer
mistakes. It comes up frequently in PVS Studio's open source
analysis write ups.
So I checked for all the languages listed: C, C#, Java,
Javascript, C++, PHP, Perl and D. All have the same order of
precedence except, as always the abomination of all languages:
C++ (kill it with fire).
C++ is the only language that has the ternary operator have the
same precedence than the assignment operators.
This means a>=5?b=100:b=200; will compile in C++ but not in all
the other languages. That's one reason why it irritates me when
people continuously refer to C and C++ as if it was the same
thing (yes I mean you Walter and Andrei).
Even PHP and Perl got it right, isn't that testament of poor
taste Bjarne?. :-)