Foros del Web » Programación para mayores de 30 ;) » C/C++ »

porque cambiar mi resultado cada vez q ejecuto el programa???

Estas en el tema de porque cambiar mi resultado cada vez q ejecuto el programa??? en el foro de C/C++ en Foros del Web. tengo este programa en C: main(){ int x= -1; printf("%f", x); getchar(); } el problema esque mi resultado varia cada vez que lo imprimo, x ...
  #1 (permalink)  
Antiguo 28/08/2010, 17:35
 
Fecha de Ingreso: agosto-2010
Mensajes: 3
Antigüedad: 13 años, 8 meses
Puntos: 0
porque cambiar mi resultado cada vez q ejecuto el programa???

tengo este programa en C:

main(){

int x= -1;

printf("%f", x);
getchar();

}

el problema esque mi resultado varia cada vez que lo imprimo,
x = -0.008593,
x = -1.176925,
x = -0.083748,
.
.
.
etc.

lo que quiero saber esq porque pasa esto, si es FPU o la arquitectura
  #2 (permalink)  
Antiguo 28/08/2010, 17:46
Avatar de guzzano  
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 13 años, 9 meses
Puntos: 13
Respuesta: porque cambiar mi resultado cada vez q ejecuto el programa???

El problema es que estas imprimiendo como si fuera float, cuando la variable es de tipo int. Solucion: printf("%i", x); y te correrá.
  #3 (permalink)  
Antiguo 28/08/2010, 17:59
 
Fecha de Ingreso: agosto-2010
Mensajes: 3
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: porque cambiar mi resultado cada vez q ejecuto el programa???

no busco que corra bien mi programa, xq si funciona, quiero saber mas halla que solo cambiar el tipo de impresion
  #4 (permalink)  
Antiguo 29/08/2010, 11:51
 
Fecha de Ingreso: agosto-2010
Mensajes: 4
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: porque cambiar mi resultado cada vez q ejecuto el programa???

Corre pero no hace lo que quieres porque mandas a imprimir un flotante siendo entero :s coloca como dice el de arriba printf("%i", x); o printf("%d", x); y funcionará sin problemas :)
  #5 (permalink)  
Antiguo 30/08/2010, 05:26
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: porque cambiar mi resultado cada vez q ejecuto el programa???

Ya sabe como se soluciona, creo que quiere saber ,más en profundidad, más casi a nivel de arquitectura, por qué ocurre eso.
  #6 (permalink)  
Antiguo 30/08/2010, 10:29
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: porque cambiar mi resultado cada vez q ejecuto el programa???

En mi Pc no sucede eso.... siempre muestra 0.00000 que es como se interpretaria los bits del -1 entero en float..


Seguro que no hay nada mas en tu priograma...... en que micro lo estas corriendo y como lo estas compilando?
  #7 (permalink)  
Antiguo 30/08/2010, 10:33
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: porque cambiar mi resultado cada vez q ejecuto el programa???

sizeof(float) > sizeof(int).

printf escribe tantos bytes como el tamaño del float, pero recibe solo los bytes del entero que se pasa como parametro.

Suponiendo que el tamano de un float es 8 y el de un int es 4.
Si yo fuera printf y me pidieran escribir 8 bytes ( %f ) pero me pasan solo 4, hay varias opciones para imprimir los 4 que no recibi:
- tomarlas del stack, el que varia de una ejecucion a otra
- hacerlas 0
- escribir cualquier basura de la memoria.

El usuario no tiene por donde reclamar que no hice lo que me pidieron (escribir 8 bytes) con la entrada que recibi: 4.
  #8 (permalink)  
Antiguo 02/09/2010, 12:42
 
Fecha de Ingreso: septiembre-2010
Mensajes: 60
Antigüedad: 13 años, 8 meses
Puntos: 5
Respuesta: porque cambiar mi resultado cada vez q ejecuto el programa???

Cita:
Iniciado por CalgaryCorpus Ver Mensaje
Suponiendo que el tamano de un float es 8 y el de un int es 4.
Si yo fuera printf y me pidieran escribir 8 bytes ( %f ) pero me pasan solo 4, hay varias opciones para imprimir los 4 que no recibi:
- tomarlas del stack, el que varia de una ejecucion a otra
Suponiendo que el float sea mayor que el int (depende de la arquitectura, nunca se sabe), y la variable pasada a printf está en la pila (parámetro "..."), el resto de cosas al imprimir las saca de la pila. Por eso varía.

Última edición por abacusar; 03/09/2010 a las 08:28

Etiquetas: programa, resultados
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:18.