2. Tipos básicos¶
2.1. Inteiros¶
Os valores inteiros são representados, ao nível da máquina, em binário, no sistema de significância posicional. O conjunto dos números naturais têm uma representação direta e o conjunto de números relativos são codificados em código dos complementos. Na Tabela 2.1 apresentam-se os identificadores de tipo, assim como as dimensões de representação nas linguagens Kotlin e C.
As palavras signed e unsigned atuam como «modificadores de sinal».
signed significa que o domínio de valores pertence ao conjunto dos números relativos
e unsigned significa que o domínio pertence ao conjunto dos números naturais.
Estes modificadores podem ser omitidos e as palavras char
ou int aparecer isoladas com os seguintes significados:
charpode ser equivalente asigned charou aunsigned char. A norma remete a definição para a implementação. Por omissão, os compiladores gcc e clang consideramcharequivalente asigned char, mas por opção podem considerar equivalente aunsigned char.
inté equivalente asigned int
As palavras short e long atuam como modificadores de dimensão no tipo int,
produzindo representações com menor ou maior número de bits, respetivamente.
Sintaticamente estas palavras podem aparecem isoladas (sem int à frente)
com os seguintes significados:
shorté equivalente ashort int
longé equivalente along int
Como a linguagem C não define dimensões concretas para
os tipos numéricos char, int, short e long, foi definido,
ao nível da biblioteca normalizada,
a existência dos tipos intXX_t sendo XX
o número de bits dessa representação concreta.
A variante uintXX_t representa valores no conjunto dos números naturais
e a variante intXX_t representa valores no conjunto dos números relativos.
Linguagem Kotlin |
Linguagem C |
Dimensão em bytes |
||||
|---|---|---|---|---|---|---|
Relativos |
Naturais |
Relativos |
Naturais |
16 bit |
32 bit |
64 bit |
|
|
|
|
1 |
1 |
1 |
|
|
|
|
2 |
2 |
2 |
|
|
|
|
2 |
4 |
4 |
|
|
|
|
4 |
4 |
8 |
|
|
1 |
1 |
1 |
||
|
|
2 |
2 |
2 |
||
|
|
4 |
4 |
4 |
||
|
|
8 |
8 |
8 |
||
O domínio de valores representável depende da dimensão da palavra em número de bits. Na Tabela 2.2 apresentam-se os domínios de valores representáveis com palavra de 8, 16, 32 e 64 bits, para números naturais ou relativos.
A escolha por parte do programador, do tipo de dados a empregar, está relacionada com a utilização eficiente da memória, face ao domínio de representação necessário no programa.
Dimensão |
Naturais |
Relativos |
||
|---|---|---|---|---|
(bits) |
Mínimo |
Máximo |
Mínimo |
Máximo |
8 |
0 |
255 |
-128 |
+127 |
16 |
0 |
65535 |
-32768 |
+32767 |
32 |
0 |
4294967295 |
-2147483648 |
+2147483647 |
64 |
0 |
18446744073709551615 |
-9223372036854775808 |
+9223372036854775807 |
2.2. Carateres¶
O tipo char é o tipo normalmente utilizado para representar caracteres.
Como os códigos dos caracteres são considerados valores numéricos,
também se pode utilizar o tipo int ou as variantes short ou long
para os representar.
2.3. Booleanos¶
Uma variável do tipo bool pode assumir os valores true ou false.
Os valores numéricos dos tipos char, short, int ou long
podem ser avaliados como valores booleanos com o seguinte critérios:
o valor zero é avaliado como false e um valor diferente de zero é avaliado como true.