Estoy tratando de asignar un valor entero grande a una variable en c y cuando imprimo solo obtengo 10123456.
¿Cual es el problema?
int main(){ long a = 1234567890123456; printf("\n",sizeof(a)); printf("%ld",a); }
El tipo entero más grande es:
unsigned long long
No te olvides del sufijo ULL.
o si necesita enteros más grandes, eche un vistazo a algunas bibliotecas bigint como gmp .
Por supuesto, también es long long
, pero también es para enteros negativos y tiene límites más pequeños.
Type min max (signed) long long -9223372036854775808 9223372036854775807 unsigned long long 0 18446744073709551615
long a = 1234567890123456L;
Si es lo suficientemente largo, depende del comstackdor / sistema operativo. Si no
long long a = 1234567890123456LL;
Si el número es mayor que 64 bits, es decir, más de lo que puede contener un unsigned long long
, entonces ningún otro tipo de datos en C que no sea la cadena ( char[]
) podrá acomodar ese valor, almacenarlo como una cadena e intentar escribir sus propias funciones para operar (por ejemplo, sumr, restar, etc.) en estos “números muy grandes”.