Ver Mensaje Individual
  #14 (permalink)  
Antiguo 22/02/2014, 15:52
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Ejercicio usar constante para dar nombre a un valor

se dice "signed a numeros con signo" ¿Que es un numero con signo? pues lo son

-100
+100
+77
-14
...
Son números negativos y positivos.
Los positivos no ves el + por que no hace falta verlo. Si no es negativo pues es positivo XD

No se cuanto números le caben a un int (eso lo buscas tu XD) pero mas o menos seria 65000 o yo que se XD

seria la mitad -32500 y la otra mitad seria +325000.
imagine una tabla asi.
-32500 ......-10000.....-5000.....-1000.......10...0.....100......1000......20000.... .32500

ese seria el rango signed (con signo)

sin signo seria:
0.....100......1000......20000.....32500.....65000

O sea puedes usar el doble por que los negativos no los vas usar.

Otra cosa: Si te cuelas metiendo un numero mayor que el que le cabe no es que te vaya tirar error.

Es que imaginas que llegas al 32500 ¿que hay aquí después del final?

pues esta el -32500 XD

si avanzas hacia allá ---> aumentas, si lo haces hacia allá <---- disminuyes.

Pero el int es como un bucle. Si te cuelas por el positivo entras al negativo y a medida que vayas incrementando en realidad el numero va disminuyendo XD

hagamos asi:

declaras un int normal:
int numero = 10000;
vaya sumando le 2000 hasta que vas a ver que va llegar una hora que va entrar en negativos y a la medida que vayas sumando le en realidad vas disminuyendo :S
¿Eso por que?
por que si sumamos vamos hacia allá ---->
cuando llegamos al final que estará mas o menos en 32000 (supuestamente :D) o yo que se va entrar en -32000
¿Recuerda la tabla?

imagino que estoy en el fin de los positivos y me cuelo.
32000..../limite/.....-32000......
Que hay para allá ----> ......-31999...31998....31997...........hasta llegar en cero y volver a iniciar otra vez en positivos y así hasta que te mueras jajaj
Pero eso es un bug por que si querías es guardar un numero mayor que esos 32000 pues vas mal XD
Si fuera unsigned al pasarte de rosca en 65000 volverías a cero por que es unsigned.
Eso es la importancia de saber cuanto puedes guardar en un int, un float, un double...
Cita:
long y shot tb se usan en int y float
Eso es una cosa que no he probado.
Pero todo va de eso si te pasas de rosca va empezar números negativos.
El limite que guarda cada variable se puede hacer un programa que te compruebe eso.
El int con signo es de -2,147,483,648 hasta 2,147,483,647.
Hagamos un esperimento

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. int main (){
  5.     system("MODE CON cols=100 lines=50"); /*Esto arregla el tamaño de la consola en colunas y lineas*/
  6.  
  7.  
  8.     int num1 = 2147480000; /*estamos casi cerca del fin que es 2,147,483,647 después empieza a achicarse el num*/
  9.     int num2 = 0;
  10.    
  11.     while ( (num1>num2) ? 1:0  ){ /*Es numero1 mayor que numero2? si es así es verdadero, si no es falso*/
  12.         num2 = num1;
  13.         num1++;
  14.         printf("%i \n", num1);
  15.     }
  16.    
  17.     printf("Te has pasado de rosca XD");
  18.    
  19.     while ( 0 ){ /*Poner a 0 si no deseas que se siga sumando para comprobar que a pesar de incrementar los números disminuyen*/
  20.         num2 = num1;
  21.         num1++;
  22.         printf("%i \n", num1);
  23.     }
  24.  
  25.     system("pause>null");
  26.     return 0;
  27. }

Cuando llegues al final(2,147,483,647) veras el limite de lo que cabe en un int.
Para ver que aun que le sigas sumando los números disminuyen pues poner el segundo bucle a numero 1 en while(0) y seguirá sumando.
pero no aumentara sino que estamos entrando por la parte negativa como si de un circulo infinito se tratara.