[C con Clase] Precedencia de operadores

Programante programante en gmail.com
Mie Abr 30 01:28:02 CEST 2008


David Reza escribió:
> Tengo una duda que me surgió de los ejercicios de Precedencia, del 
> capítulo 14: ¿cómo puedo saber o cómo puede saber el compilador cómo 
> realizar operaciones como éstas?
>
> 1)    ++*p+++*q;
> 2)    ++*p + ++*q;
> 3)    ++*p + + + *q;
> 4)    ++*p + + +*q;
>
> Es decir, cómo saber en una operación cómo la primera que, después de 
> la p, se toman los dos signos '+' de post-incremento para *p en vez de 
> tomar solamente un signo '+' y utilizar los otros 2 signos restantes 
> como un pre-incremento para *q.
>
> O simplemente porqué a pesar de los espacios en algunas de las demás 
> operaciones el resultado o la operación sigue siendo la misma? 
> (Excepto en la segunda)||
Los compiladores de C ignoran los espacios. Sólo resultan útiles para 
delimitar tokens. En este caso para diferenciar + de ++. Pero 
estructuras como "+ + +" no deberían ser válidas. Por otor lado, 
recuerda que aunque tu compilador trate una línea llena de esos 
operadores de una forma, hay construcciones cuyo significado no está 
definido por el estándar.




Más información sobre la lista de distribución Cconclase