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

¿Fue útil?

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
scroll top