La producción de múltiples correos y incrementos pre en una declaración [duplicado]
-
26-09-2019 - |
Pregunta
Esta pregunta ya tiene una respuesta aquí:
Soy nuevo en lenguaje C de modo PLZ sum1 ayuda a salir. código A C escrito
int i=3;
printf("%d",++i + ++i);
Complier gvs O / P = 9. ¿Cómo?
Gracias de antemano
Solución
Los resultados están definidos. Usted está modificando una variable más de una vez en una expresión (o punto secuencia para ser más exactos) .
La modificación de una variable más de una vez entre los puntos de secuencia no está definido, por lo que no lo haga.
Puede ser que sea su compilador, para este caso particular decide evalate
++i + ++i
como
- incrementar el último
++i
, produciendo 4, dejando i como 4 - incrementar el primero
++i
, produciendo 5, dejando i para ser 5 (como el paso previo i deja como 4, incrementándolo a 5) - sumar los dos valores, 4 + 5.
Otro compilador, o si se altera el nivel de optimización, o si cambia ligeramente el código, puede producir resultados distintos.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow