vuelve seguir puedo pueden porque poner los intentarlo hashtags guardaron funcionan cuantos cambios c++ c visual-c++

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 .