2010-12-10 18 views

Respuesta

11

x+++++y se analiza como x ++ ++ + y y no como x ++ + ++ y. De acuerdo con Maximal Munch principle "El señalizador debe seguir leyendo caracteres del archivo de origen hasta sumar un personaje más hace que el símbolo actual a dejar de tener sentido"

x++ ++ +y no debe compilar (en C y C++) debido a que el operador de incremento ++ requiere un lvalue como argumento y devuelve un rvalue.

+0

Esto es válido para todos los idiomas que usan codicioso/más largo partido expresiones regulares para la tokenización, que debería ser la mayoría de ellas (en realidad, no puedo pensar en una que no lo haga). – delnan

+0

* "' 'x ++ ++ y y' no debería compilarse" * Y, de hecho, no (en 'gcc' de todos modos):' error: lvalue requerido como operando de incremento' Wow me alivió ver eso. –

+0

Desafortunadamente, no todas las formas de '+++++++++' no están disponibles. MSVC por lo menos acepta feliz algunos de ellos y luego WTF sabe qué con eso. Existe esta pequeña utilidad interna que siempre se le ha dado a un interno para hacer (no es mi decisión). Tiene mierda así en todo el lugar. –