una tiene sume suma serie separar saber que programa números numeros numero mayor los escribir entre ejemplo digitos diga dev cuantos comprendidos como c++

tiene - C++: número entero máximo



suma de n numeros en dev c++ (5)

Esta pregunta ya tiene una respuesta aquí:

¿Hay una biblioteca multiplataforma en C ++ que me proporcione un número entero máximo portátil?

Quiero declarar:

const int MAX_NUM = /* call some library here */;

Uso MSVC 2008 sin gestionar.


En Hp UX con compilador aCC:

#include <iostream> #include <limits> using namespace std; int main () { if (sizeof(int)==sizeof(long)){ cout<<"sizeof int == sizeof long"<<endl; } else { cout<<"sizeof int != sizeof long"<<endl; } if (numeric_limits<int>::max()==numeric_limits<long>::max()){ cout<<"INT_MAX == lONG_MAX"<<endl; } else { cout<<"INT_MAX != LONG_MAX"<<endl; } cout << "Maximum value for int: " << numeric_limits<int>::max() << endl; cout << "Maximum value for long: " << numeric_limits<long>::max() << endl; return 0; }

Imprime:

sizeof int == sizeof long

INT_MAX! = LONG_MAX

Comprobé que los tipos int y long son 4bytes. los límites de manpage (5) dicen que INT_MAX y LONG_MAX son ambos 2147483647

http://nixdoc.net/man-pages/HP-UX/man5/limits.5.html

Por lo tanto, conclusión std :: numeric_limits <tipo> :: no es portable.


En el encabezado de biblioteca estándar de C ++ <limits> , encontrará:

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

Lo cual le indicará el valor máximo que puede almacenarse en una variable de tipo int . numeric_limits es una plantilla de clase, y puede pasarle cualquiera de los tipos numéricos para obtener el valor máximo que puede contener.

La plantilla de clase numeric_limits tiene mucha otra información sobre tipos numéricos también .


Sé que es una vieja pregunta, pero tal vez alguien pueda usar esta solución:

int size = 0; // Fill all bits with zero (0) size = ~size; // Negate all bits, thus all bits are set to one (1)

Hasta ahora tenemos -1 como resultado ''hasta que el tamaño sea un int firmado.

size = (unsigned int)size >> 1; // Shift the bits of size one position to the right.

Como dice Standard, los bits que se desplazan son 1 si la variable está firmada y es negativa y 0 si la variable no está firmada o firmada y es positiva.

Como el tamaño está firmado y negativ, cambiaríamos en el bit de signo que es 1, lo cual no ayuda mucho, así que lanzamos a unsigned int, forzando a cambiar en 0, ajustando el bit de signo a 0 mientras dejamos que todos los demás bits permanezcan 1.

cout << size << endl; // Prints out size which is now set to maximum positive value.

También podríamos usar una máscara y xor, pero luego teníamos que saber el tamaño exacto de bits de la variable. Con el desplazamiento en bits, no tenemos que saber en ningún momento cuántos bits tiene el int en la máquina o el compilador ni necesitamos incluir bibliotecas adicionales.


Sé que la respuesta ha sido dada, pero solo quiero saber de mis viejos tiempos, solía hacer

int max = (unsigned int)-1

¿Dará lo mismo que

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

?


Ver limits.h (C) o climits (C ++). En este caso, querrá la constante INT_MAX .