2011-04-13 801 views

Respuesta

10

Es legal y analizado como x---y.

Creo que los primeros dos signos menos se interpretan como un operador de decremento posterior porque es el token más largo siguiente a x que es legal para aparecer. Esto deja el tercer signo menos para jugar el papel de resta. Esto está de acuerdo con Máxima regla [1]

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

0

(x -) - y; ¿Qué compilador usas? ¿Cuáles son los tipos de x y y?

1

Esto está relacionado con la precedencia del operador. Eche un vistazo a este table.

El operador de decremento/incremento tiene prioridad sobre las operaciones aritméticas. Será analizado como x-- - y.

Para corregir mi respuesta: El analizador coincide con la señal más larga que la primera, por lo -- se elige sobre la aritmética -. Como resultado de la expresión que se analiza como x-- - y

+1

+1 para mencionar precedencia de operador * y * vincular una fuente. – Mephane

+14

Reglas de tokenización, no precedencia del operador. – aschepler

+1

Esto no tiene que ver con la precedencia, sino con la forma en que se * analiza * el idioma. – Jon

1

Para todos los tipos de datos, se analiza como x-- - y. Si se trata de un objeto class, entonces tiene que definir operador de decremento y operador menos, dará error de compilación si solo define operador de decremento previo. Eso significa que x-- - y es forzado en cualquier caso.

Cuestiones relacionadas