Problemas en lenguaje C: ¿Es i++;
¿Dirías que a = b = c = d es una declaración de asignación? ¿A quién está asignado?
¿Qué pasa con a = ( c = b +d )?x : y, 10?
Estrictamente hablando, no hay declaraciones de asignación en la clasificación de declaraciones de lenguaje basadas en expresiones.
BASIC, Pascal y Fortran tienen declaraciones de asignación estrictas.
------------------------------------------- -------------------------------------------------- --
Hablando de efectos secundarios, i++ de hecho puede cambiar el valor de i. Pero mire el siguiente programa:
Los compiladores anteriores podrían haber admitido conversiones de valor l, pero ¿qué pasó?
Con un ligero error tipográfico, ni siquiera debería pasar, excepto con el antiguo compilador TC.
Ten en cuenta que las indicaciones son diferentes.
De hecho, si hay un valor l, se debe decir que es lo que se llama una declaración de asignación.
La declaración de asignación consta del operador de asignación valor l y valor r. Pero en realidad el problema es complejo.
float a=1.0;
((int)a)++;
printf("%f\n",a);
flotar a=1.0;
(int)a+=1
printf("%f\n",a);
flotar a=1.0;
(int)a=a+1;
printf("%f\n",a);