Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/11/2013, 10:29
Avatar de vangodp
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. }