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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  pregunta sobre enteros en lenguaje c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: pregunta sobre enteros en lenguaje c  (Leído 2,123 veces)
mataliebres

Desconectado Desconectado

Mensajes: 19


Ver Perfil
pregunta sobre enteros en lenguaje c
« en: 19 Febrero 2015, 18:13 pm »

hola compañeros, he echo un programita para saber si un numero es primo o no, y funciona bien, el problema es que solo acepta 9 cifras ejemplo 999.999.999 ese es el maximo, la variable la declaro con int, se que se puede declarar por ejemplo long o long long y el tope es mucho mas largo, el problema es que  me da error al compilar, diciendo que no se puede saber el resto con el tipo de entero long, no se si me habeis entendido asi que os pongo un ejemplo de como tengo hecho el programa con las variables int,

asi funciona bien
int numero=153462567;
int divisor=2;
if((numero%divisor)==0)

asi falla al compilar y da error
long numero=2555666777;
long divisor=2;
if((numero%divisor)==0)

para coger el numero tengo un scanf() pero ese no creo que sea el problema porque lo he hecho sin el y da el mismo error


En línea

theluigy13etv

Desconectado Desconectado

Mensajes: 179


Primero se hace, después se mejora


Ver Perfil
Re: pregunta sobre enteros en lenguaje c
« Respuesta #1 en: 19 Febrero 2015, 18:28 pm »

Hola, no sé si es que te entendí bien, pero creo que cuando dices: "el problema es que  me da error al compilar" no te refieres a un error de compilación sino a un error lógico en tiempo de ejecución (eso es lo que me da a mí. Uso Dev C++).

El error que puedo ver es que cuando haces esta asignación:

long numero=2555666777;

La variable "numero" se desborda y no puede guardar un número muy grande.

No sé cómo funcione en tu computador, pero en el mío cuando uso el operador sizeof para ver el tamaño del tipo int y long me sale en ambos 4 bytes. En cambio, el tipo long long tiene un tamaño de 8 bytes, por lo que si declaras la variable de tipo long long no habría desbordamiento al guardar el número 2555666777:

long long numero=2555666777;

Ojalá sea esta tu duda :)


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: pregunta sobre enteros en lenguaje c
« Respuesta #2 en: 19 Febrero 2015, 19:49 pm »

efectivamente como indica theluigy13etv el error no es de compilacion sino de tiempo de ejecución

normalmente las variables son limitadas
int son 32 bits, desde -2147483647, hasta 2147483647
unsigned int 32 bits sin signo, desde 0 hasta 4294967295
unsigned long int son 64 bits, desde 0 hasta 18446744073709551615


de todas formas puedes comprobarlo con el siguiente codigo
Código
  1. #include <stdio.h>
  2. int main (){
  3. printf("Maximo uint %u\n",(unsigned int)-1);
  4. printf("Maximo ulong %lu\n",(unsigned long int)-1);
  5. }
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
mataliebres

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: pregunta sobre enteros en lenguaje c
« Respuesta #3 en: 20 Febrero 2015, 00:33 am »

ya me funciona chicos, llevaba tiempo sin programar y no recuerdo muy bien el lenguaje, muchas gracias
un saludo
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