c++ - seguir - no se guardaron los cambios vuelve a intentarlo instagram
¿Qué significa la operación c=a+++ b? (8)
De acuerdo con la regla de Partida más larga , se analiza como ++ ++ en la fase de análisis léxico del compilador. De ahí la salida resultante.
El siguiente código me tiene confundido
int a=2,b=5,c;
c=a+++b;
printf("%d,%d,%d",a,b,c);
Esperaba que la salida fuera de 3,5,8, principalmente porque a ++ significa 2 + 1, lo que equivale a 3, y 3 + 5 es igual a 8, así que esperaba 3,5,8. Resulta que el resultado es 3,5,7. ¿Alguien puede explicar por qué es este el caso?
El operador de incremento posterior, a ++, cambia el valor tge de a una vez que se evalúa el valor de a en la expresión. Como el valor original de a es 2, eso es lo que se usa para calcular c; el valor de a se cambia para reflejar el nuevo valor después de que se evalúa ++.
Este es un ejemplo de mal estilo de programación.
Es bastante ilegible, sin embargo, el post incrementa a
por lo que suma el valor actual de a
a b
luego aumenta a
!
Se analiza como c = a++ + b
, y a++
significa post-incremento, es decir, incremento después de tomar el valor de a
para calcular a + b == 2 + 5
.
Por favor, nunca escriba código como este.
a ++ + b ..it da el resultado 7 y después de que el valor de expresión de a se actualiza a 3 debido al operador de incremento de post
a ++ es un incremento posterior , es decir, la expresión toma el valor de a y luego agrega 1.
c = ++ a + b haría lo que esperas.
a ++ se evalúa después de la expresión.
c = ++ a + b; te daría lo que pensabas
La regla máxima de Munch se aplica a dicha expresión, según la cual, la expresión se analiza como:
c = a++ + b;
Es decir, a
es post-incrementado ( a++
) y, por lo tanto, el valor actual de a
(antes del incremento posterior) se toma para la operación +
con b
.