Autor
|
Tema: Ayuda 1pregunta en C/C++ (Leído 3,620 veces)
|
XorNet
Desconectado
Mensajes: 14
|
Bueno tengo 1 duda que para ustedes quizas sea estúpida xD Bueno aqui va, sí tenemos un programa se la siguiente manera: #include <stdio.h> int funcion2() { return 5; } int funcion1() { return funcion2(); /* Mi duda esta acá, es decir, a retornar una función este entra a esa función y retorna lo mismo que retorna la funcion2? Osea en este caso la funcion 2 retorna 5, entonces la funcion1() entra a la función2() y esta retorna lo mismo que la funcion2()? Ya que como esta retornando la función yo opino que la funcion1() entra a la funcion2() dado que la funcion2() retorna 5, la funcion1() retornara 5 ya que esta pidiendo que retorne a la funcion2()*/ } int main(void) { printf("%d \n",funcion1() ); getchar(); return 0; }
|
|
« Última modificación: 23 Julio 2013, 00:43 am por XorNet »
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
No me he entrao de ná. xD
A ver... Esto es probarlo y aun no me ha quedado claro tu duda...
PD: Tal como tienes en tu code todo esto, te va a salir 5, y tu pides el porque... Yo no tengo npi. xD
|
|
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
XorNet
Desconectado
Mensajes: 14
|
No me he entrao de ná. xD
A ver... Esto es probarlo y aun no me ha quedado claro tu duda...
PD: Tal como tienes en tu code todo esto, te va a salir 5, y tu pides el porque... Yo no tengo npi. xD
Lo que trato de decir es que, al retornar una función este entra a la función y retorna el resultado esa función? o retorna la función (Perdóname semejante estupidez seguro no es así pero quiero asegurarme xddd)
|
|
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
No tengo una respuesta certera 100%, pero como puedes observar ese return engloba a toda la función por lo que probablemente, estés retornando la función entera , aunque si te das cuenta siempre que uses return al final de una variable, supongo que podrás hacer int algo = 6; y luego un return algo;... Y ya ahí estés retornando una variable, pero yo que te voy a decir si he empezado hoy con C++ xD Que te digan los pros del sub-foro de Programación C++ lo que ellos pienses. PD: No se porque quieres saber tal tontería, pero bueno.
|
|
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Puntoinfinito
Desconectado
Mensajes: 919
#! /win/archlinux
|
A ver, lo primero que se ejecuta es main(), evidentemente. Luego a partir de ahí llama a la impresión de pantalla con el valor que retorna function1(), que esta va a function2() que retorna el número 5, y luego vuelve a main(), en este caso ejecuta getchar() y bye bye.
|
|
|
En línea
|
|
|
|
Caster
|
Lo primero: Hay que aprender a explicarse un poco mejor, sin animo de ofender. Segundo: No hay mejor manera de aprender a programar que probando cada uno sus codigos, al compilar este codigo: #include <stdio.h> int funcion1(); int funcion2(); int main() { return 0; } int funcion2() { return 5; } int funcion1() { return funcion2(); }
el compilador no da ningun aviso ni error y compilar perfectamente, y el resultado es este: 5 Saludos.
|
|
|
En línea
|
|
|
|
calabuig21
|
Hazte un dibujo a mano, sigue las funciones y verás el resultado. Un ejemplo fácil lo puedes hacer en papel y lapiz
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
cuando tu haces #include <stdio.h> int funcion2() { return 5; } int funcion1() { return funcion2(); } int main(void) { return 0; }
Lo que estás haciendo, realmente, es lo siguiente: * Has creado una función "funcion2", que lo único que hace es devolver el resultado que a su vez le proporciona otra funcion "funcion1". * Dado que funcion1 siempre va a devolver un 5, funcion2 va a devolver ese mismo 5. * El printf del main va a sacar por pantalla el valor devuelto por funcion2... es decir, un 5. Cuando tu haces lo siguiente: int funcion2( ) { return funcion1( ); }
No estás devolviendo una función... sino el resultado de esa función. De hecho, lo que has puesto es equivalente a: int funcion2( ) { int resultado = funcion1( ); return resultado; }
Es decir, tu no devuelves funciones. Más bien estás llamando a una función determinada ( funcion1 ) y estás almacenando el resultado que te devuelve.
|
|
|
En línea
|
|
|
|
zonahurbana
Desconectado
Mensajes: 178
RS, JC.
|
#include <stdio.h> int funcion2() { return 5; } int funcion1() { return funcion2(); } int main(void) { printf("%d \n",funcion1() ); getchar(); return 0; }
- Al inicio se encuentra la declaración y definición de ambas funciones (ello no implica que se ejecuten antes de main(), sólo si son llamadas por esta función principal). - Desde main() muestras el valor devuelto por funcion1(). - funcion1() devuelve el valor devuelto por funcion2(). - funcion2() devuelve 5. - Se muestra 5 por pantalla. Extra. Por lo general se recomienda escribir antes de main() los prototipos de las funciones. Algo como: int funcion1(); int funcion2();
Y luego, usualmente después de main(), definir el cuerpo de las funciones, para que no haya conflictos en programas donde usas muchas. Por ejemplo, en tu programa, si el orden hubiese sido el siguiente: #include <stdio.h> int funcion1() { return funcion2(); } int funcion2() { return 5; } int main(void) { printf("%d \n",funcion1() ); getchar(); return 0; }
... hubiese errores, ya que al momento en que se define el cuerpo de funcion1() aún no existe funcion2(). Entonces cuando muchas funciones se llamen entre sí, para no estar pendientes del orden, es mejor escribir sus declaraciones (prototipos ).
|
|
|
En línea
|
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
Vamos ha hacerlo más interesante. Esto es una función que te calcula las veces que tienes que dividir entre 2 un número para obtener 0: #include <stdio.h> int funcion1(int i) { if (i == 0) return 0; return funcion1(i/2) + 1; } int main(void) { printf("%d iteraciones \n",funcion1(10) ); getchar(); return 0; }
Como puedes ver, se puede retornar incluso la misma función. A esta técnica de programación se le llama recursividad, o función recursiva.
|
|
« Última modificación: 24 Julio 2013, 07:58 am por amchacon »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Amigos necesito ayuda con un background para un logo de una web ayuda.
Diseño Gráfico
|
™Carlos.®
|
2
|
3,427
|
14 Agosto 2004, 00:23 am
por ™Carlos.®
|
|
|
[Ayuda] Necesito ayuda para crear un buen video uso AF y Flash.
Diseño Gráfico
|
XXXXXX
|
1
|
5,499
|
11 Noviembre 2009, 00:17 am
por Sub_Cero
|
|
|
Ayuda por davor ayuda os ruego ayuda XD (SOLUCIONADO)
Hardware
|
XxRekcahlExX
|
6
|
10,567
|
24 Mayo 2010, 00:56 am
por Aprendiz-Oscuro
|
|
|
AYUDA -.- ahora no entro más en 4chan (tengo una duda, ayuda por favor)
Foro Libre
|
Draklit
|
6
|
8,751
|
15 Octubre 2010, 03:14 am
por Draklit
|
|
|
sist lince indumentaria ayuda ayuda!!!!!!!!!! problemon que hice en le trabajo
Software
|
paola03
|
1
|
4,941
|
11 Marzo 2011, 01:09 am
por charola42
|
|