Le 02/04/2012 13:10, Stewart Gordon a écrit :
On 02/04/2012 11:32, Simen Kjaeraas wrote:
On Mon, 02 Apr 2012 12:03:14 +0200, deadalnix <deadal...@gmail.com>
wrote:
I have a design question, or maybe it is a bug ? In D, == and != have
the same
precedence than comparisons operators. This isn't the case in C/C++ .
Is it a design
decision, made on purpose ? Is it a bug ?
<snip>
It's there to force proper parenthezation:
<snip>

That combined with associativity rules.

In C(++),
a < b == c <= d
means
(a < b) == (c <= d)

However, if one simply made all the comparison operators equal
precedence, then the meaning of this would change to
((a < b) == c) <= d

However, what has actually been done is to make these operators
non-associative as well, in order to render it an illegal expression.
This was done to prevent subtle typos or confusion with other
languages/notations where chaining of comparison operators denotes a
conjunction of the comparisons.

Another way to look at it is that the different comparison operators
have no precedence relative to each other (though each still needs to be
non-associative). Indeed, another change that has taken place is to make
the comparison operators have no precedence relative to the bitwise
boolean operators, simply because the C precedence rules here were
confusing.
http://d.puremagic.com/issues/show_bug.cgi?id=4077

Stewart.

So basically, the precedence doesn't matter because any situation where it matter is illegal anyway ?

Reply via email to