• Martes 12 de Noviembre de 2024, 21:16

Autor Tema:  duda  (Leído 1385 veces)

Mendes

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
duda
« en: Viernes 30 de Abril de 2010, 17:03 »
0
int main()
{
int i = 1;

printf (“%d %d %d”, i++, ++i, i++);

}
Ante este programa la salida seria 1 2 1 ó 1 3 4?

Jeysscarr

  • Miembro MUY activo
  • ***
  • Mensajes: 134
  • Nacionalidad: co
    • Ver Perfil
Re: duda
« Respuesta #1 en: Viernes 30 de Abril de 2010, 17:36 »
0
La salida seria 3 3 1
Nuestro poder está creciendo mas rápido que nuestra sabiduria

Mendes

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: duda
« Respuesta #2 en: Viernes 30 de Abril de 2010, 18:11 »
0
el problema es que tengo este condicionante, entonces no se si el valor de i se actualiza antes o despues:
Assuming that the evaluation of each parameter value passed to a function is always done right prior to the parameter value being pushed to the stack (not every compiler works this way) please indicate what the output of the following would be, draw how the stack would look like after printf(…) is entered and explain why it needs to be that way.

int main()
{
int i = 1;

printf (“%d %d %d”, i++, ++i, i++);

}

Jeysscarr

  • Miembro MUY activo
  • ***
  • Mensajes: 134
  • Nacionalidad: co
    • Ver Perfil
Re: duda
« Respuesta #3 en: Viernes 30 de Abril de 2010, 18:55 »
0
Nuestro poder está creciendo mas rápido que nuestra sabiduria

Mendes

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: duda
« Respuesta #4 en: Viernes 30 de Abril de 2010, 19:08 »
0
Gracias, por el enlace, pero entonces la salida no seria 1,3,3 en vez de 3,3,1?

エリック

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: duda
« Respuesta #5 en: Viernes 30 de Abril de 2010, 19:34 »
0
Exacto la salida debe de ser 1,3,3. No 3,3,1.
Al menos es lo que debe de parecer pero compilando el programa, me produce 3,3,1.
Aqui les dejo el codigo:

Código: C++
  1.  
  2. #include <iostream>
  3. using std::cout;
  4. using std::endl;
  5. #include <cstdio>
  6. /*Modificado por*/
  7. int main()
  8. {
  9.     int i=1;
  10.     printf("%dn%dn%d",i++,++i,i++);
  11.     /*cout<<i++<<endl;
  12.     cout<<++i<<endl;
  13.     cout<<i++<<endl;*/
  14.     return 0;
  15. }
  16.  
  17.  
  18.  
Alguien podria decir por que imprime al reves, con printf?

NICOLASBLUES

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: duda
« Respuesta #6 en: Lunes 10 de Mayo de 2010, 18:37 »
0
:S no seria 3 4 1 ???