elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Función que retorna el valor de retorno de otra función
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Función que retorna el valor de retorno de otra función  (Leído 4,677 veces)
naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Función que retorna el valor de retorno de otra función
« en: 7 Diciembre 2011, 01:03 am »

Tengo dos funciones que retornan entero, una llamada prueba y la otra prueba2 dentro de prueba llamo a prueba2 y sin poner return en prueba me devuelve el valor de retorno de prueba2. No se si me explique bien pero aquí les dejo el código:

Código
  1. #include <stdio.h>
  2.  
  3. int prueba2(){
  4. return 11321;
  5. }
  6.  
  7. int prueba(){
  8. prueba2();
  9. }
  10.  
  11. int main(void){
  12. printf("%d\n", prueba()); // Imprime 11321
  13. return 0;
  14. }

Mi pregunta es, por que pasa esto?


En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Función que retorna el valor de retorno de otra función
« Respuesta #1 en: 7 Diciembre 2011, 02:22 am »

la funcion "prueba" debe de retornar con un valor int ya que es int sino has un void
en VS eso ni compila


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Función que retorna el valor de retorno de otra función
« Respuesta #2 en: 7 Diciembre 2011, 06:19 am »

Mi pregunta es, por que pasa esto?
Cuando no se indica el valor de retorno de una funcion este es "no definido". Un caso similar es cuando se utiliza una variable local sin darle un valor inicial explicito.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Función que retorna el valor de retorno de otra función
« Respuesta #3 en: 7 Diciembre 2011, 21:36 pm »

Cuando no se indica el valor de retorno de una funcion este es "no definido". Un caso similar es cuando se utiliza una variable local sin darle un valor inicial explicito.

Un saludo

Entonces es basura y es solo casualidad que agarre el valor de retorno de la otra función?
En línea

Arkangel_0x7C5


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: Función que retorna el valor de retorno de otra función
« Respuesta #4 en: 7 Diciembre 2011, 23:17 pm »

Entonces es basura y es solo casualidad que agarre el valor de retorno de la otra función?
Casualidad no es. Sale el de la otra función, porque el valor se queda en el registro de la cpu que se usa para devolver valores. y como el ultimo que lo modifico fue esa funcion para devolverte ese valor, al final se queda igual porque no hay nada que lo modifique. y te sale ese valor de retorno. Si el compilador colocara algo entre medias no te daría ese resultado....

Saludos
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Función que retorna el valor de retorno de otra función
« Respuesta #5 en: 7 Diciembre 2011, 23:39 pm »

Si me pareció raro que siempre retornaba el valor que "tenia" que retornar, pero a la final sería basura correcto?
En línea

Arkangel_0x7C5


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: Función que retorna el valor de retorno de otra función
« Respuesta #6 en: 7 Diciembre 2011, 23:42 pm »

Si, claro. Este efecto es cosa de la implementacion del compilador

Saludos
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Función que retorna el valor de retorno de otra función
« Respuesta #7 en: 7 Diciembre 2011, 23:45 pm »

Bueno muchas gracias luego con mas calma veré el archivo con el asm para ver si logro verlo ahí.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines