Enviar respuesta 
[TUT] Llaves { } en variables normales y char
Autor Mensaje
Destro Sin conexión
Anti-cheat Team


Buen Tutorial Plugin developer Pensador Plugin popular
Mensajes: 820
Registro en: Oct 2013
Reputación: 4
Mensaje: #1
[TUT] Llaves { } en variables normales y char
Variable char obsoleta:
Se pensaba que las variables char ocupaban 1Byte,pero resulta que son asignadas de a 4Bytes, siendo igual que cualquier otra variable. De todos modos las llaves { } siguen siendo útil.

__________________________________________________________

Espesemos por lo básico:
Byte y bit:
Bit (Binary digit) es la mas mínima cantidad de información, solo se puede representar por 1 o 0 (true/false).
Byte es el conjunto de 8 bits.

Tipos de datos en Pawn
Pawn soporta un solo tipo de dato, el tipo cell(celda).
Cell es del tipo integer, tiene un tamaño de 32 bits (4 Bytes) o 64 bits (8 Bytes) dependiendo del equipo.

AmxModx
AmxModx solo soporta un único tipo de dato para sus natives y forwards, el tipo cell.

Etiquetas
Tal vez alguno se pregunte ¿y los tipos float/bool?.
En pawn Float y bool solo son etiquetas,no es un tipo de dato.


Llaves { }:
Hace un tiempo se pensaba que eran para acceder a cada elemento de una variable char, pero no resulto ser del todo cierto. El verdadero uso es para acceder a cada byte de cualquier variable.
Como solo se puede acceder a un byte, los valores numéricos que se pueden almacenar son de 0 a 255

¿Como utilizar las llaves { }?

Sintaxis básica:
Código PHP:
new test[1]

test{0} = 4
test
{1} = 5
test
{2} = 6
test
{3} = 7

test
{4} = // Invalido

server_print("[%d][%d][%d][%d]"test{0}, test{1}, test{2}, test{3})


/*Valido*/
new test[2]

test{0} = 4
test
{1} = 5
test
{2} = 6
test
{3} = 7
test
{4} = 8
test
{5} = 9
test
{6} = 10 
test
{7} = 11 

Ejemplo en uso
Código PHP:
/*En cualquiera de los dos casos la variable termina ocupando 36 Bytes*/
new g_is_connected[9// o g_is_connected[33 char]


public client_putinserver(id)
{
    
g_is_connected{id} = 1
}

public 
client_disconnect(id)
{
    
g_is_connected{id} = 0
}

public 
una_funcion(id)
{
    if(!
g_is_connected{id})
        
// no esta conectado

Usando llaves nos ahorramos 96 Bytes


¿En que casos es recomendado usar?
Cuando tengas que almacenar mas de un dato y que los valores de esos datos se encuentren entre 0 y 255

(Este mensaje fue modificado por última vez en: 01/10/2014 02:30 AM por Destro.)
27/04/2014 05:28 AM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
roccoxx Sin conexión
Miembro Destacado


Plugin developer Trebol purpura 1k
Mensajes: 1,159
Registro en: Oct 2013
Reputación: 18
Mensaje: #2
RE: Variable tipo char
if(!g_is_connected{id}) te ahorras mas que con bitsums?

futuro ingeniero agrónomo.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

volví a vender plugins, contactame
27/04/2014 11:39 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Neeeeeeeeeel.- Sin conexión
Administrador


El protector Plugin developer 1k
Mensajes: 1,976
Registro en: Oct 2013
Reputación: 38
Mensaje: #3
Re: Variable tipo char
Depende como uses los bits rocccox, si creas una variable y usas un solo bit, es al pedo ya que estas desperdiciando 31bits que estan reservados en memoria para esa variable.

No contesto mensajes privados pidiendo soporte!

Donaciones en btc 1EcNJV2gTFDYr7BBAFpMQk7pVCFEZCaKX4
27/04/2014 12:38 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
kirito Sin conexión
Miembro Sr.


Mensajes: 474
Registro en: Oct 2013
Reputación: 4
Mensaje: #4
RE: Variable tipo char
Código PHP:
if(!g_is_connected{id}) 
=
Código PHP:
if(!g_is_connected[id]) 

Mientras creces maduras y luego vez que dejas de ser un bebe y quieres aprender,ayudar y no ser egoísta.
27/04/2014 12:51 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
roccoxx Sin conexión
Miembro Destacado


Plugin developer Trebol purpura 1k
Mensajes: 1,159
Registro en: Oct 2013
Reputación: 18
Mensaje: #5
RE: Variable tipo char
(27/04/2014 12:38 PM)Neeeeeeeeeel.- escribió:  Depende como uses los bits rocccox, si creas una variable y usas un solo bit, es al pedo ya que estas desperdiciando 31bits que estan reservados en memoria para esa variable.

A joyita.

futuro ingeniero agrónomo.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

volví a vender plugins, contactame
27/04/2014 12:57 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Zonejo Sin conexión
Miembro Junior


Mensajes: 14
Registro en: Mar 2014
Reputación: 0
Mensaje: #6
RE: Variable tipo char
Interesante, siempre quise usar variables de tipo char en pawn pero habia leido que solo podias usar de tipo celda
Cita:Pawn only has one data type -- the "cell". It is the size of the processor's integral pointer (4 bytes for 32bit processor, 8 bytes for 64bit processors). This has two major implications - Pawn bytecode is processor specific, and pointers can fit inside a cell.

He vivido una mentira toda mi vida e.e

PD: Es posible usar char en vez de unsigned char?
27/04/2014 04:06 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
CSAxel Sin conexión
Miembro Héroe


Plugin developer 1k
Mensajes: 1,837
Registro en: Dec 2013
Reputación: 40
Mensaje: #7
RE: Variable tipo char
En el caso de "is_user_conected[33 char]" estariamos ahorrando 792 bits (99 Bytes)
Si al usar una variable "is_user_conected[33]" Cuantos bits estariamos usando ??.. Mejor dicho, cual seria la diferencia entre estos ??
No se mucho con el tema de bitsums o este tipo pero me gustaria aprender mas
27/04/2014 04:43 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Zonejo Sin conexión
Miembro Junior


Mensajes: 14
Registro en: Mar 2014
Reputación: 0
Mensaje: #8
RE: Variable tipo char
La diferencia es que estas tomando entre esos 2, es que en el primero estas consumiendo menos bytes pero tenes acotado el rango de valores que podes darle (no hace diferencia si la usas de forma booleana). De igual forma es mejor crear una variable 'is_user_connected' y operar con bits, tenes 32 bits y usas 1 bit para chequear cada jugador
27/04/2014 05:08 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Destro Sin conexión
Anti-cheat Team


Buen Tutorial Plugin developer Pensador Plugin popular
Mensajes: 820
Registro en: Oct 2013
Reputación: 4
Mensaje: #9
RE: Variable tipo char
(27/04/2014 04:06 PM)Zonejo escribió:  PD: Es posible usar char en vez de unsigned char?
aparentemente no,en la guiá de pawn especifica los valores como unsigned char

27/04/2014 05:37 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
[R]ak Sin conexión
Miembro Pandawan


Panda Plugin developer Donador Plugin popular
Mensajes: 633
Registro en: Oct 2013
Reputación: 22
Mensaje: #10
RE: Variable tipo char
lindo tuto :3

Hi Milashkasiya CrabCrab

Soy un #Panda.. Soy solo un tipo que parece #común pero soy todo lo contrario; alguien #atípico en esta sociedad actual

Image
Link
28/04/2014 12:30 AM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Enviar respuesta 


Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)

Contáctanos | Allied Modders en español | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS