[C con Clase] Duda

Oscar pelucheloko en hotmail.com
Vie Dic 9 23:49:23 CET 2011


Imaginaba algo así, pero, al ver un swap antes del main, y uno después de 
él, no me queda claro qué swap entra en juego ¿por qué el que está después 
de main? ¿es por que c++ hace una ejecución secuencial línea a línea? 
(supongo que esta pregunta es muy novata :-))

También observo que el swap después de main le siguen los {  bla bla bla } 
que engloban acciones.

Steven, gracias por tu sabia respuesta.



Oscar Aparicio Holgado
Administrador de sistemas.


-----Mensaje original----- 
From: Steven Davidson
Sent: Friday, December 09, 2011 3:16 PM
To: Lista de correo sobre C y C++
Subject: Re: [C con Clase] Duda

Hola Óscar,

2011/12/9 Oscar AH <enigma-si en hotmail.com>:
> Hola que tal como estais.
>
> Tengo el siguiente código :
>
> #include <iostream>
>
> void swap(int *x, int *y);
>
> int main()
> {
>     int x = 5, y = 10;
>
>     std::cout << "Main. Before swap, x: " << x
>               << " y: " << y << "\n";
>     swap(&x, &y);
>     std::cout << "Main. After swap, x: " << x
>               << " y: " << y << "\n";
>     return 0;
> }
>
> void swap(int *px, int *py)
> {
>     int temp;
>
>     std::cout << "Swap. Before swap, *px: " << *px
>               << " *py: " << *py << "\n";
>
>     temp = *px;
>     *px = *py;
>     *py = temp;
>
>     std::cout << "Swap. After swap, *px: " << *px
>               << " *py: " << *py << "\n";
> }
>
> que produce la siguiente salida :
>
> Main. Before swap, x: 5 y: 10
> Swap. Before swap, *px: 5 *py: 10
> Swap. After swap, *px: 10 *py: 5
> Main. After swap, x: 10 y: 5
>
> No entiendo por qué si en main después del primer Main. Before swap salta 
> a
> Swap. Before swap.
>
> ¿Me lo podeis explicar por favor?
>

Porque en 'main()', se invoca a 'swap()', por lo tanto se ejecuta sus
sentencias; esto es,

1)    int x = 5, y = 10;

2)    std::cout << "Main. Before swap, x: " << x
                << " y: " << y << "\n";
3)    swap(&x, &y);

Dentro de 'swap()':

3.1)    int temp;

3.2)    std::cout << "Swap. Before swap, *px: " << *px
                  << " *py: " << *py << "\n";


Espero haberte orientado un poco.

Steven

_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ 





Más información sobre la lista de distribución Cconclase