Tipos de dados inteiros da linguagem Delphi Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Tipos de dados inteiros da linguagem Delphi

Ir para baixo

Tipos de dados inteiros da linguagem Delphi Empty Tipos de dados inteiros da linguagem Delphi

Mensagem por GripeBovina Sáb Dez 04, 2010 8:23 pm

1 - Tipos inteiros

Um tipo integer representa um sub-conjunto de números inteiros. Os tipos inteiros genéricos são Integer e Cardinal. Devemos usar estes dois tipos sempre que possível, visto que eles resultam na melhor performance para o CPU atual e o sistema operacional. Veja abaixo uma lista de tipos inteiros, suas faixas de valores e formato de armazenamento para um compilador Delphi de 32 bits.

1.1 - Tipos inteiros genéricos para a implementação 32-bit do Delphi

Tipo
Faixa de valores
Formato

Integer
-2147483648..2147483647
32 bits com sinal
Cardinal
0..4294967295
32 bits sem sinal

1.2 - Tipos inteiros fundamentais

Tipo
Faixa de valores
Formato

Shortint
-128..127 8 bits com sinal
Smallint
-32768..32767
16 bits com sinal Longint -2147483648..2147483647 32 bits com sinal Int64 -2^63..2^63-1 64 bits com sinal Byte 0..255 8 bits sem sinal Word 0..65535 16 bits sem sinal Longword 0..4294967295 32 bits sem sinal
Em geral as operações aritméticas envolvendo tipos inteiros retornam um valor do tipo Integer, o qual, em sua implementação atual é equivalente ao tipo Longint de 32 bits. As operações retornam um valor do tipo Int64 somente quando um ou mais operandos forem do tipo Int64. Assim, o trecho de código abaixo não produz o resultado esperado:

procedure TForm3.Button2Click(Sender: TObject)*
var
I: Integer;
J: Int64;
begin
I := High(Integer)*
J := I + 1;
ShowMessage(IntToSTr(J))*
end;

O resultado exibido será -2147483648, ou seja, houve um estouro da capacidade máxima positiva de um Integer. Mas, como J é do tipo Int64, é de se esperar que o valor fosse 2147483648. Para que isso aconteça, temos que fazer um cast em pelo menos um dos valores envolvidos para o tipo Int64. Veja:

procedure TForm3.Button2Click(Sender: TObject)*
var
I: Integer;
J: Int64;
begin
I := High(Integer)*
J := Int64(I) + 1;
ShowMessage(IntToSTr(J))*
end;

Agora sim, o resultado será 2147483648.

Importante:

Algumas rotinas padrões que aceitam argumentos Integer truncam valores Int64 para 32 bits. Contudo, as funções High(), Low(), Succ(), Pred(), Inc(), Dec(), IntToStr() e IntToHex() suportam argumentos Int64. Além disso, as funções Round(), Trunc(), StrToInt64() e StrToInt64Def() retornam valores do tipo Int64. Mas lembre-se: algumas rotinas Delphi não aceitam valores Int64 de forma alguma.

Quando incrementamos o último valores ou decrementamos o primeiro valor em um tipo inteiro, o resultado varia entre o início e fim da faixa. Por exemplo, o tipo Shortint tem a faixa -128..127. Desta forma, depois de executarmos o código:

procedure TForm3.Button2Click(Sender: TObject)*
var
I: Shortint;
begin
I := High(Shortint)*
I := I + 1;
ShowMessage(IntToStr(I))*
end;

O valor da variável I é -128. Se habilitarmos a diretiva range-checking do compilador, este código gerará um erro de runtime.
GripeBovina
GripeBovina
Novato
Novato

Mensagens : 23
Créditos : 15

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos