Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Limites de variáveis


Jabutti

Pergunta

Olá pessoal.

Se eu fizer a declaração

unsigned int V;

atribuir o valor a variável V

V = UINT_MAX;

e fazer a operação

V = V + 1;

o resultado de V será zero. Até aqui tudo beleza.

O que eu quero fazer e não sei é possível é: atribuir um valor máximo a variável V diferente de UINT_MAX (por exemplo, 10) e ao fazer a operação:

V = 10;

V = V+1;

ter como resultado V=0.

Resumindo, gostaria de modificar o valor de UINT_MAX, ou criar uma variável com seu próprio valor máximo. É possível?

Alguém pode me ajudar?

Obrigado

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
Por que você não usa o resto da divisão '%'?

Por exemplo:

V= 10

V = (V + 1) % 11

Dai V vai ser 0.

Na verdade eu to escrevendo um programa pra minha tese de mestrado e eu tenho uma variável que é acrescida ou decrescida aleatoriamente por valores tb aleatórios. Essa variável tem um valor mínimo, 1, e tem um valor máximo, N. Eu queria, sem usar "if", por ex.

Vamos supor que o valor atual de V é: V = N - 1;

ao fazer a operação:

V = V + 3;

eu queria obter o resultado: V = 2;

OU se o valor de V é: V = 1;

ao fazer a operação?

V = V - 1;

obter: V = N;

Não quero usar "if" porque essas operações são realizadas milhares de vezes e o "if" deixa o programa lento.

Link para o comentário
Compartilhar em outros sites

  • 0

O valor máximo é uma potência de dois? Se for tem um jeito prático, testa esse código:

#include <stdio.h>

typedef struct {
  unsigned int num : 3; // Valor máximo no caso é (2^3 - 1)
} UINT;

int main(void)
{
  UINT var;
  int i;

  for (i = 0; i < 32; i++)
    printf("%d", var.num++);
  printf("\n");

  return 0;
}

Até mais!

Editado por == Douplus ==
Link para o comentário
Compartilhar em outros sites

  • 0
Muito legal, essa não sabia. Você poderia explicar o que ':' faz? E também porque só funciona dentro da estrutura e não dentro do main.

Abraço.

O : após uma declaração de variável em uma struct informa a quantidade de bits que se deseja para o tamanho da variável. Daí a fórmula 2^N-1, a partir do número de arranjos com repetição possíveis de 2 em grupos de N:

Ar(2,5) = 2^N
Considerando a representação do zero, o maior valor representável com N bits :
2^N - 1
No código que eu postei usei N = 3, logo o maior valor representável é:
(111)b = (7)d = 2^3 - 1

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...