Quote:
Originally Posted by ReDKiiL
Duvida
Caroline o Que й char?
que voce criou ali new tTemp[MAX_PLAYERS char];
|
Usa-se
char para transformar o nъmero de cells de uma variбvel array no menor nъmero de cells capaz de armazenar a mesma quantidade de valores que aquela mas usando 8 bits (1/4 da cell) para cada valor
.
A variбvel array abaixo, que tem 1 cell
:
Pode armazenar apenas 1 letra/nъmero normal e 4 valores packed (valores armazenados por partнculas de 8 bits, ou seja, por 1/4 (um quarto) de cell).
Mas como isso й possнvel ?
.
Bem, cada cell de uma array tem 4 bytes de tamanho e cada letra ou nъmero tem 1 byte de tamanho
.
Entгo vocк pensa, se 1 byte de uma cell de array pode armazenar 1 byte de valor numйrico ou alfabйtico, entгo pra que os outros 3 bytes ?
.
Os outros 3 bytes (ou uma parcela deles) serгo utilizados quando o valor numйrico ou alfabйtico que se quer armazenar for maior que 255 (as letras/nъmeros que citei antes eram os menores ou iguais a 255/da Tabela ASCII
), pois nesse caso, ele terб um nъmero de bits em sua composiзгo binбria maior, e consequentemente, um tamanho maior
.
Entгo, ao armazenar valores daquele tipo a cell apenas passa a usar 100% de sua capacidade
.
Em compensaзгo, elas acabam podendo armazenar apenar valores menores ou iguais a 255, incluindo todos os valores da tabela ASCII
.
Exemplo:
pawn Code:
new o[4 char]; //Ou new o[1]; pois basicamente o char divide a quantidade atual de cells por 4.
o{0} = 5;
o{1} = 6;
o{2} = 7;
o{3} = 8;
//o{4} geraria um error, pois todas as partes (de 1/4 cada uma) da cell jб teriam sido utilizadas.
printf("%i", o{2}); //Imprimirб o nъmero 7
Espero ter ajudado
.