tipos tipo sirve rangos que para long float datos dato c++ types

sirve - ¿Cómo se encuentra el rango de valores que los tipos enteros pueden representar en C++?



tipos de variables en c++ y sus rangos (9)

#include<stdio.h> #include<limits.h> void main() { printf(" signed data types " ); printf(" int min : %d ", INT_MIN); // INT_MIN, INT_MAX, SCHAR_MIN, SCHAR_MAX ....etc printf(" int max : %d ",INT_MAX);// pre defined constants to get the values of datatypes printf(" signed char min : %d ", SCHAR_MIN); printf(" signed char max : %d ", SCHAR_MAX); // similarly for un_signed // use %u for control charter, and UINT_MAX, UCHAR_MAX, USHRT_MAX, ULONG_MAX. }

El tamaño y el rango de los tipos de valores enteros en C ++ son específicos de la plataforma. Los valores encontrados en la mayoría de los sistemas de 32 bits se pueden encontrar en Variables. Tipos de datos. - Documentación C ++ . ¿Cómo se determina cuál es el tamaño y el rango real para su sistema específico?


Estilo C

limits.h contiene los valores mínimo y máximo para ints y otros tipos de datos que deberían ser exactamente lo que necesita:

#include <limits.h> // C header #include <climits> // C++ header // Constant containing the minimum value of a signed integer (–2,147,483,648) INT_MIN; // Constant containing the maximum value of a signed integer (+2,147,483,647) INT_MAX;

Para obtener una lista completa de las constantes y sus valores comunes, consulte: Wikipedia - limits.h

Estilo C ++

Hay un método de C ++ basado en plantilla como otros comentaristas han mencionado usando:

#include <limits> std::numeric_limits

que se ve así:

std::numeric_limits<int>::max();

e incluso puede hacer cosas más ingeniosas como determinar el número de dígitos posibles o si el tipo de datos está firmado o no:

// Number of digits for decimal (base 10) std::numeric_limits<char>::digits10; // Number of digits for binary std::numeric_limits<char>::digits; std::numeric_limits<unsigned int>::is_signed;


¿Por qué no solo estar seguro y usar los tipos numéricos de boost?

es decir:

boost::uint32_t boost::int32_t

etc


Eche un vistazo a std::numeric_limits


Puede usar los tipos definidos en stdint.h (o cstdint , si usa C ++), que son parte del estándar C99. Define tipos con nombres tales como int32_t , uint8_t , int64_t , etc., que se garantiza que son portátiles y de plataforma independiente.

Para más información: stdint.h


Utilice el operador sizeof() en C ++ para determinar el tamaño (en bytes) de un tipo de valor. El archivo de encabezado de biblioteca estándar limits.h contiene los límites de rango para los tipos de valores enteros. Puede ejecutar el siguiente programa para conocer los límites de tamaño y rango para los tipos enteros en su sistema.

#include <stdlib.h> #include <iostream> #include <limits> using namespace std; int main(int argc, char** argv) { cout << "/nCharacter Types" << endl; cout << "Size of character type is " << sizeof(char) << " byte." << endl; cout << "Signed char min: " << SCHAR_MIN << endl; cout << "Signed char max: " << SCHAR_MAX << endl; cout << "Unsigned char min: 0" << endl; cout << "Unsigned char max: " << UCHAR_MAX << endl; cout << "/nShort Int Types" << endl; cout << "Size of short int type is " << sizeof(short) << " bytes." << endl; cout << "Signed short min: " << SHRT_MIN << endl; cout << "Signed short max: " << SHRT_MAX << endl; cout << "Unsigned short min: 0" << endl; cout << "Unsigned short max: " << USHRT_MAX << endl; cout << "/nInt Types" << endl; cout << "Size of int type is " << sizeof(int) << " bytes." << endl; cout << "Signed int min: " << INT_MIN << endl; cout << "Signed int max: " << INT_MAX << endl; cout << "Unsigned int min: 0" << endl; cout << "Unsigned int max: " << UINT_MAX << endl; cout << "/nLong Int Types" << endl; cout << "Size of long int type is " << sizeof(long) << " bytes." << endl; cout << "Signed long min: " << LONG_MIN << endl; cout << "Signed long max: " << LONG_MAX << endl; cout << "Unsigned long min: 0" << endl; cout << "Unsigned long max: " << ULONG_MAX << endl; return (EXIT_SUCCESS); }


sizeof(int)


Puede obtener el rango de cualquier tipo de datos aplicando el siguiente formulla:

[-2 potencia (N-1)] a {[+2 potencia (N-1)] - 1}

Donde "N" es el ancho del tipo de datos, por ejemplo, en JAVA, el ancho de int es 32, por lo tanto, N = 32.

Prueba esto, lo conseguirás.


Las operaciones en bits se pueden usar para encontrar la cantidad de bits y el rango de int en una plataforma. Aquí hay una muestra que escribí para probar el rango de int en mi máquina.

#include <iostream> using namespace std; void print_int_range() { int i=1; int nOfBits=0; while (i != 0) { i = i << 1; nOfBits++; } cout << "int has " << nOfBits << " bits" << endl; cout << "mininum int: " << (1 << (nOfBits - 1)) << ", maximum int: " << ~(1 << (nOfBits - 1)) << endl; } void print_unsigned_int_range() { unsigned int i=1; int nOfBits=0; while (i != 0) { i = i << 1; nOfBits++; } cout << "unsigned int has " << nOfBits << " bits" << endl; cout << "mininum int: " << (0) << ", maximum int: " << (unsigned int) (~0) << endl; } int main() { print_int_range(); print_unsigned_int_range(); }

Y aquí está mi resultado:

int has 32 bits mininum int: -2147483648, maximum int: 2147483647 unsigned int has 32 bits mininum int: 0, maximum int: 4294967295