Ir para o conteúdo
skcratch

C - Maior número inteiro

Mensagens Recomendadas

skcratch    0
skcratch

Viva!

Será que alguém me podia dizer se existe alguma representação tipo constante (ou algo desse género), para o maior número inteiro que se pode representar em C?

Grato desde já pela ajuda!

Cumps!

:)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triton    12
Triton

Sim, essas informações estão no ficheiro limits.h.

Aqui fica um exemplo:

int main(int argc, char *argv[])
{
printf("TYPE \t\t BYTES \t SMALLEST \t\t LARGEST\n\n");

printf("signed char \t %zd \t %hhd \t\t\t %hhd\n",
	sizeof(signed char), CHAR_MIN, CHAR_MAX);

printf("unsigned char \t %zd \t 0 \t\t\t %hhu\n\n",
	sizeof(unsigned char), UCHAR_MAX);

printf("signed int \t %zd \t %d \t\t %d\n",
	sizeof(signed int), INT_MIN, INT_MAX);

printf("unsigned int \t %zd \t 0 \t\t\t %u\n\n",
	sizeof(unsigned int), UINT_MAX);

printf("signed short \t %zd \t %hd \t\t %hd\n",
	sizeof(signed short), SHRT_MIN, SHRT_MAX);

printf("unsigned short \t %zd \t 0 \t\t\t %hu\n\n",
	sizeof(unsigned short), USHRT_MAX);

printf("signed long \t %zd \t %ld \t %ld\n",
	sizeof(signed long), LONG_MIN, LONG_MAX);

printf("unsigned long \t %zd \t 0 \t\t\t %lu\n\n",
	sizeof(unsigned long), ULONG_MAX);

printf("float \t\t %zd \t %E \t\t %E\n",
	sizeof(float), FLT_MIN, FLT_MAX);

printf("double \t\t %zd \t %E \t\t %E\n",
	sizeof(double), DBL_MIN, DBL_MAX);

return 0;
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nDray    1
nDray

podes sempre calcular 2 ^ (4 * sizeof(tipo)) - 1. até porque int é uma word, e varia consoante a largura do bus da máquina em que se encontra.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    312
Rui Carlos

podes sempre calcular 2 ^ (4 * sizeof(tipo)) - 1. até porque int é uma word, e varia consoante a largura do bus da máquina em que se encontra.

Assim à primeira vista essa fórmula está errada.

Para números com sinal deve ficar 2 ^ (8 * sizeof(tipo) - 1) - 1 e sem sinal 2 ^ (8 * sizeof(tipo)) - 1.

De qualquer forma é muito mais simples, seguro e eficiente usar as constantes do sistema.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
souto    0
souto

O máximo q usei foi um numero com 19 digitos, e foi assim:

long long int numero=1234567890123456789LL;

printf("Numero: %lld", numero);

maior ainda seria

unsigned long long int numero;

E este sim, o maior de todos :)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
falk0n    0
falk0n

e possivel que seja o maior numero em inteiro , mas penso que o long long seja uma extensao do compilador da gnu, pode nao existir em todos os compiladores de C.

boas programacoes

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triton    12
Triton

e possivel que seja o maior numero em inteiro , mas penso que o long long seja uma extensao do compilador da gnu, pode nao existir em todos os compiladores de C.

boas programacoes

Existe em todos os compiladores que suportem a norma C99.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade