Título: Duda sobre C
Publicado por: JPS en 13 Enero 2018, 02:44 am
¿Hay algún código en C que te dé el rango de valores máximo (sin pasarse) en una máquina de sus tipos de dato?
Con esta web (http://decsai.ugr.es/~jfv/ed1/c/cdrom/cap2/cap24.htm) me hago una idea base, pero quiero algo más... comprobable mediante código.
¿Alguna idea de cómo hacer el algoritmo?
Título: Re: Duda sobre C
Publicado por: fary en 13 Enero 2018, 07:51 am
En sistemas de 32 bits sería un DWORD, en 64 un QWORD, puede cambiar el tamaño de la variable long,int,... según el compilador que uses y para que SO lo compiles por eso C trae la función sizeof, usalá.
saludos!
Título: Re: Duda sobre C
Publicado por: engel lex en 13 Enero 2018, 13:19 pm
En C tienes esta opción #include <limits.h> int intmin = INT_MIN; int intmax = INT_MAX;
La variables contendrán su máximo y mínimo valor, lee sobre limits.h para más información de los otros tipos Con los float, esto lleva truco... #include <float.h> float floatmin = FLT_MIN; float floatmax = FLT_MAX;
Los float son un tipo complicado de número, así que el resultado puede ser un poco "abstracto"
Título: Re: Duda sobre C
Publicado por: JPS en 13 Enero 2018, 17:30 pm
¡Muchas gracias a los dos, me habéis servido de mucha ayuda! ¡Ahora a experimentar!
Título: Re: Duda sobre C (rangos de valores)
Publicado por: dijsktra en 8 Febrero 2018, 15:59 pm
Este programa se puede compilar y ejecutar en tu plataforma de desarrollo. Por cierto, que no sé la fuente-url de dónde lo he sacado, pero no es propio. #include <stdio.h> #include <stdlib.h> #include <limits.h> #include <float.h> int main(int argc, char** argv) { printf("CHAR_BIT : %d\n", CHAR_BIT ); printf("CHAR_MAX : %d\n", CHAR_MAX ); printf("CHAR_MIN : %d\n", CHAR_MIN ); printf("INT_MAX : %d\n", INT_MAX ); printf("INT_MIN : %d\n", INT_MIN ); printf("LONG_MAX : %ld\n", (long) LONG_MAX ); printf("LONG_MIN : %ld\n", (long) LONG_MIN ); printf("SCHAR_MAX : %d\n", SCHAR_MAX ); printf("SCHAR_MIN : %d\n", SCHAR_MIN ); printf("SHRT_MAX : %d\n", SHRT_MAX ); printf("SHRT_MIN : %d\n", SHRT_MIN ); printf("UCHAR_MAX : %d\n", UCHAR_MAX ); printf("UINT_MAX : %u\n", (unsigned int) UINT_MAX ); printf("ULONG_MAX : %lu\n", (unsigned long) ULONG_MAX ); printf("USHRT_MAX : %d\n", (unsigned short) USHRT_MAX ); printf("FLT_MAX : %g\n", (float) FLT_MAX ); printf("FLT_MIN : %g\n", (float) FLT_MIN ); printf("-FLT_MAX : %g\n", (float) -FLT_MAX ); printf("-FLT_MIN : %g\n", (float) -FLT_MIN ); printf("DBL_MAX : %g\n", (double) DBL_MAX ); printf("DBL_MIN : %g\n", (double) DBL_MIN ); printf("-DBL_MAX : %g\n", (double) -DBL_MAX ); printf("Storage size for int : %d \n", sizeof(int)); printf("Storage size for unsigned int : %d \n", sizeof(unsigned int)); printf("Storage size for unsigned long : %d \n", sizeof(unsigned long)); printf("Storage size for long long : %d \n", sizeof(long long )); printf("Storage size for unsigned long long : %d \n", sizeof(unsigned long long)); return (EXIT_SUCCESS); }
Esto cambia según la plataforma de desarrollo. En linux-x86-64, a mí me sale esto, pero entros puede salir otra cosa. CHAR_BIT : 8 CHAR_MAX : 127 CHAR_MIN : -128 INT_MAX : 2147483647 INT_MIN : -2147483648 LONG_MAX : 9223372036854775807 LONG_MIN : -9223372036854775808 SCHAR_MAX : 127 SCHAR_MIN : -128 SHRT_MAX : 32767 SHRT_MIN : -32768 UCHAR_MAX : 255 UINT_MAX : 4294967295 ULONG_MAX : 18446744073709551615 USHRT_MAX : 65535 FLT_MAX : 3.40282e+38 FLT_MIN : 1.17549e-38 -FLT_MAX : -3.40282e+38 -FLT_MIN : -1.17549e-38 DBL_MAX : 1.79769e+308 DBL_MIN : 2.22507e-308 -DBL_MAX : -1.79769e+308 Storage size for int : 4 Storage size for unsigned int : 4 Storage size for unsigned long : 8 Storage size for long long : 8 Storage size for unsigned long long : 8
|