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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  C - Tipos de datos - Flotantes - Adquirir rango de valores para flotantes
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: C - Tipos de datos - Flotantes - Adquirir rango de valores para flotantes  (Leído 1,554 veces)
JPS

Desconectado Desconectado

Mensajes: 17


Ver Perfil
C - Tipos de datos - Flotantes - Adquirir rango de valores para flotantes
« en: 28 Abril 2018, 04:41 am »

Pues, he creado el siguiente código con la biblioteca limits.h; pero esta no tiene macros para saber el valor MAX y MIN de los tipos flotantes. ¿Alguien sabe de alguna otra biblioteca que me diese macros para terminar este sencillo programa?

Y segunda pregunta: ¿alguien sabe si compilo la línea 10 y 11 porque me sale un error en el DEVC++? No lo entiendo.

Código
  1. #include <stdio.h>
  2. #include <limits.h>
  3.  
  4. int main()
  5. {
  6.  
  7. printf("Numero de bits que tiene un tipo CHAR = %i\n\n", CHAR_BIT);
  8. /*
  9. No funcionan ¿Por qué?
  10. printf("Numero de bits que tiene un tipo INT = %i\n\n", WORD_BIT);
  11. printf("Numero de bits que tiene un tipo LONG = %i\n\n", LONG_BIT);
  12. */
  13. //-------------------------------------------------------------------------------------
  14.  
  15. printf("El valor minimo de CHAR = %i\n", CHAR_MIN);
  16. printf("El valor maximo de CHAR = %i\n\n", CHAR_MAX);
  17.  
  18. printf("El valor minimo de SIGNED CHAR = %i\n", SCHAR_MIN);
  19. printf("El valor maximo de SIGNED CHAR = %i\n\n", SCHAR_MAX);
  20.  
  21. printf("El valor minimo de UNSIGNED CHAR = 0\n");
  22. printf("El valor maximo de UNSIGNED CHAR = %u\n\n", UCHAR_MAX);
  23.  
  24. //-------------------------------------------------------------------------------------
  25.  
  26. printf("El valor minimo de SHORT INT = %i\n", SHRT_MIN);
  27. printf("El valor maximo de SHORT INT = %i\n\n", SHRT_MAX);
  28.  
  29. printf("El valor minimo de UNSIGNED SHORT INT = 0\n");
  30. printf("El valor maximo de UNSIGNED SHORT INT = %u\n\n", USHRT_MAX);
  31.  
  32. printf("El valor minimo de INT = %i\n", INT_MIN);
  33. printf("El valor maximo de INT = %i\n\n", INT_MAX);
  34.  
  35. printf("El valor minimo de UNSIGNED INT = 0\n");
  36. printf("El valor maximo de UNSIGNED INT = %u\n\n", UINT_MAX);
  37.  
  38. //-------------------------------------------------------------------------------------
  39.  
  40. printf("El valor minimo de LONG = %li\n", LONG_MIN);
  41. printf("El valor maximo de LONG = %li\n\n", LONG_MAX);
  42.  
  43. printf("El valor minimo de UNSIGNED LONG = 0\n");
  44. printf("El valor maximo de UNSIGNED LONG = %lu\n\n", ULONG_MAX);
  45.  
  46.   printf("El valor minimo de LONG LONG = %lli\n", LLONG_MIN);
  47. printf("El valor maximo de LONG LONG = %lli\n\n", LLONG_MAX);
  48.  
  49. printf("El valor minimo de UNSIGNED LONG LONG = 0\n");
  50. printf("El valor maximo de UNSIGNED LONG LONG = %llu\n\n", ULLONG_MAX);
  51.  
  52. //-------------------------------------------------------------------------------------
  53.  
  54. // Faltan los rangos de valores para los float, double y long double, además de sus formateadores.
  55.  
  56.   return(0);
  57. }
  58.  
  59.  
  60.  
  61. /*
  62. Estos Valores y formateadores los he ido recopilando y testeando, algunos no me han funcionado como el %Li.
  63.  
  64. Valores de tipos de datos según compilador y sistema operativo (16, 32 o 64bits).
  65. ================================================================================
  66.  
  67. signed char -> tipo caracter con signo -> %c | Tamaño = 1byte | Rango = -128...127 |
  68. char -> tipo caracter con signo -> %c | Tamaño = 1byte | Rango = -128...127 | Ejemplo: char a='e';
  69. unsigned char -> tipo caracter sin signo -> %c | Tamaño = 1byte | Rango = 0...255 |
  70.  
  71. short -> tipo entero corto con signo -> %i | Tamaño = 2bytes | Rango = -32768...32767 | Ejemplo: short b=-15;
  72. int -> tipo entero normal con signo -> %i | Tamaño = 2bytes | Rango = -32768...32767 | Ejemplo: int c=1024;
  73. unsigned int -> tipo entero normal sin signo -> %u | Tamaño = 2bytes | Rango = 0...65535 | Ejemplo: unsigned int d=50456;
  74. signed int -> tipo entero normal con signo -> %i | Tamaño = 2bytes | Rango = -32768...32767 |
  75. short int -> tipo entero corto con signo -> %i | Tamaño = 2bytes | Rango = -32768...32767 |
  76. unsigned short int -> tipo entero corto sin signo -> %u | Tamaño = 2bytes | Rango = 0...65535 |
  77. signed short int -> tipo entero corto con signo -> %i | Tamaño = 2bytes | Rango = -32768...32767 |
  78.  
  79. long int -> tipo entero largo con signo -> %li | Tamaño = 4bytes | Rango = -2147483648...2147483637 |
  80. signed long int -> tipo entero largo con signo -> %li | Tamaño = 4bytes | Rango = -2147483648...2147483637 |
  81. unsigned long int -> tipo entero largo sin signo -> %li | Tamaño = 4bytes | Rango = 0...4294967295 |
  82. long -> tipo entero largo con signo -> %li | Tamaño = 4bytes | Rango = -2147483648...2147483637 | Ejemplo: long e=123456;
  83. unsigned long -> tipo entero largo sin signo -> %li | Tamaño = 4bytes | Rango = 0...4294967295 |
  84.  
  85. float -> tipo real normal -> %f | Tamaño = 4bytes | Rango = 3.4*E-38...3.4*E38 | Ejemplo: float a=15.678;
  86. double -> tipo real largo -> %lf | Tamaño = 8bytes | Rango = 1.7*E-308...1.7*E308 | Ejemplo: float a=15.678;
  87. long double -> tipo real muy largo -> %Lf | Tamaño = 8bytes o 10bytes | Rango = 1.7*E-308...1.7*E308 o 3.4*E-4932...3.4*E4932 | Ejemplo: float a=15.678;
  88.  
  89. ¿Cómo saturar el valor de las variables?
  90.  
  91.  
  92. Formateadores (Wikipedia: https://es.wikipedia.org/wiki/Printf)
  93. ===============================================================
  94. %d ó %i entero en base 10 con signo (int)
  95. %u entero en base 10 sin signo (int)
  96. %o entero en base 8 sin signo (int)
  97. %x entero en base 16, letras en minúscula (int)
  98. %X entero en base 16, letras en mayúscula (int)
  99. %li ó %ld ?
  100. %lu
  101. %lli
  102. %llu
  103. %Li ?
  104. %f Coma flotante decimal de precisión simple (float)
  105. %lf Coma flotante decimal de precisión doble (double)
  106. %e La notación científica (mantisa / exponente), minúsculas (decimal precisión simple ó doble)
  107. %E La notación científica (mantisa / exponente), mayúsculas (decimal precisión simple ó doble)
  108. %c caracter (char)
  109. %s cadena de caracteres (string)
  110.  
  111.  
  112.  
  113. %07i justificado a la derecha, 7 dígitos de largo, sin relleno
  114. %.7i largo mínimo de 7 dígitos, justificado a la derecha, rellena con ceros
  115. %8.2f tamaño total de 8 dígitos, con dos decimales
  116. %.*f”',x,d) tamaño predeterminado,x numeros decimales
  117. %*.*f”,x,y,d) tamaño igual a x, y numeros decimales
  118. %s cadena terminada en null
  119. %5s primeros cinco caracteres o delimitador
  120. %.5s primeros cinco caracteres, sin tener en cuenta el delimitador
  121. %20.5s primeros cinco caracteres, justificados a la derecha, con 20 caracteres de largo
  122. %-20.5s primeros cinco caracteres, justificados a la izquierda, con 20 caracteres de largo
  123.  
  124. */
  125.  
  126.  


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.498



Ver Perfil
Re: C - Tipos de datos - Flotantes - Adquirir rango de valores para flotantes
« Respuesta #1 en: 28 Abril 2018, 07:39 am »

Float.h love have, aquí un artículo sobre los límites

http://en.cppreference.com/w/c/types/limits


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.
JPS

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: C - Tipos de datos - Flotantes - Adquirir rango de valores para flotantes
« Respuesta #2 en: 28 Abril 2018, 20:24 pm »

Gracias Engel, justo lo que necesitaba.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con elementos flotantes y su fondo « 1 2 »
Desarrollo Web
KaozC9 10 2,821 Último mensaje 4 Junio 2010, 23:02 pm
por KaozC9
ayuda con flotantes en asm
ASM
danielo- 3 5,064 Último mensaje 2 Diciembre 2010, 02:03 am
por Eternal Idol
Flotantes aleatorios
Programación C/C++
85 7 3,090 Último mensaje 7 Marzo 2013, 02:56 am
por 85
Manipular flotantes en la pila
ASM
Yuki 2 1,696 Último mensaje 17 Junio 2016, 02:28 am
por Yuki
Por fin llegaron las ventanas flotantes a WhatsApp y los usuarios están ...
Noticias
wolfbcn 0 312 Último mensaje 19 Diciembre 2018, 01:54 am
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines