2011-04-13 45 views

回答

10

這是合法的,並解析爲x---y

我相信前兩個減號被解釋爲減法後運算符,因爲它是x後面最長的令牌,它是合法出現的。這使得第三個減去扮演減法的角色。 這是按照最大規則 [1]

[1]。 http://en.wikipedia.org/wiki/Maximal_munch

0

(x - ) - y;你使用哪個編譯器? x和y的類型是什麼?

1

這與運算符優先級有關。看看這個table

遞減/增量運算符優先於算術運算。它將被解析爲x-- - y

要糾正我的回答:解析器最長令牌第一相匹配,所以--選擇在算術-。導致表達式被解析爲x-- - y

+1

提及運算符優先級*和*鏈接源。 – Mephane 2011-04-13 12:46:04

+14

Tokenization規則,而不是運算符優先級。 – aschepler 2011-04-13 12:46:18

+1

這不是與優先級有關,而是語言如何被解析*。 – Jon 2011-04-13 12:46:30

1

對於所有數據類型,它被解析爲x-- - y。如果是一些class對象,那麼你必須定義後遞減運營商和負操作,它會給編譯錯誤,如果你只是定義預減運營商。這意味着,無論如何x-- - y都是被迫的。