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

[SOLUCIONADO] Duda: errores de desbordamiento en C

Estas en el tema de Duda: errores de desbordamiento en C en el foro de C/C++ en Foros del Web. Muy buenas a todos. He empezado este año a dar C después de un par de meses dando Java y tengo una duda con el ...
  #1 (permalink)  
Antiguo 18/11/2013, 06:25
 
Fecha de Ingreso: diciembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Duda: errores de desbordamiento en C

Muy buenas a todos. He empezado este año a dar C después de un par de meses dando Java y tengo una duda con el desbordamiento de memoria.

Tengo que hacer un programa muy típico como es el del factorial de un número, con datos del tipo int, y tenemos que dejar indicado cuándo hay error de desbordamiento y cuándo es negativo el número introducido, etc. ¿Alguien me puede explicar cómo se controla el desbordamiento?

Yo tengo ya hecha mi función factorial con un if que me devuelve un error si se introduce un número negativo y devuelve el factorial si es positivo. Lo único que me falta es que me devuelva un error cuando haya desbordamiento, pero no tengo ni idea de cómo es la condición para ello.

Muchas gracias.
  #2 (permalink)  
Antiguo 18/11/2013, 10:29
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Duda: errores de desbordamiento en C

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5.  
  6. int main ()
  7. {
  8.     int tuvariable = 2147483647;
  9.     cout << "un int ocupa en la memoria " << sizeof(int) << " bytes" << endl;
  10.     //deberia ocupar 4 bytes pero depende de la maquina
  11.    
  12.     // como un tipo int puede albergar de -2147483648 a 2147483647
  13.     // si le sume 1 a 2147483647 entro a los negativos como si fuera un bucle.
  14.     //   -2147483648..................0.................. 2147483647 + 1  // si aqui le sumas 1...
  15.     //   ^--Entras en los negativos de arriba   <-------------------------// ...y pasas el limite                                                                                                
  16.      
  17.      //por tanto seria
  18.      
  19.      cout << "Esto guarda \"tuvariable\": " << tuvariable << endl;// vemos lo que esta en tuvariable
  20.      
  21.      cout << "sumamos uno a tuvariable y hacemos CRASH XD en el bufer" << endl;
  22.      tuvariable++ ;   // sumamos uno para que salte la alarma XD
  23.      
  24.      if ( tuvariable >= 2147483647 )              // checamos si nos hemos colado
  25.     cout << "fonfonALARMA! Te has pasado de rosca !XD" << endl; // Damos la voz de alarma
  26.    
  27.      // Mostramos el nuevo valor despues de la alarma, y sera -2147483648
  28.      cout << "ahora guarda  esto: " << tuvariable << endl;  
  29.      cout << "Como ves pasamos de positivo a negativo como si de un bucle se tratara";
  30.      
  31.          
  32.     return 0;
  33. }
  #3 (permalink)  
Antiguo 18/11/2013, 10:34
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Duda: errores de desbordamiento en C

Esto es??
Por que soy muy novatin y no se si es esto lo que buscas :D
aqui hay una tabla muy buena para prevenir esto: http://ejercicioscpp.blogspot.com.es...atos-en-c.html
con sizeof( <tipodedato>) puedes saber cuanto bytes ocupa un tipo en la memoria.
  #4 (permalink)  
Antiguo 18/11/2013, 14:27
 
Fecha de Ingreso: diciembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Duda: errores de desbordamiento en C

Muchísimas gracias a los dos, ya lo he conseguido

Etiquetas: desbordamiento, funciones, int
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 02:59.