[Off] [Duda] sizeof utilizando "char".
#1

Hola gente.
Tengo este cуdigo:

pawn Код:
static MyVar[20 char] = {1, ...};

// OnGameModeInit
printf("size %i", sizeof(MyVar));
Mi duda es, porquй sale "size 4"?
Pero al cambiar a йsto:

pawn Код:
static MyVar[19 + 1 char] = {1, ...};
Ahн sн sale "size 20", es algъn tipo de bug en el compilador?
Y otra cosa, porquй cada 4 нndices el valor es 1, y en los demбs es 0? (ya que todos los нndices deberнan retornar 1)
Reply
#2

En el primero deberнa salirte 'size 5' pero, supongo que te da 20 en el segundo porque no te da el valor char de (19+1) si no de (1) que es 1.

es decir si haces:

Код:
static MyVar[20 + 20 char] = {1, ...};
el printf te deberнa retornar 25...

porque es como que hicieras:

Код:
static MyVar[20 + 5] = {1, ...};
Lo otro no tengo idea jajaj aunque creo que es porque al inicializar {1, 1, 1} se establece el valor en la posiciуn de la celda, como si hiciera:

Код:
static MyVar[10] = {1, ...};
cada celda serнa '0001'

y no en la posiciуn de cada byte que serнa '1111'.
Reply
#3

No entendi ni un pedo lo primero jajaja, pero segun leн es un bug del compilador.
Igual ya entiendo lo segundo +6

EDIT: no se de donde salio ese tag offtopic jajaja
Reply
#4

xD yo no lo veo como bug la verdad.

char solo te retorna el nъmero de celdas necesarias dependiendo el nъmero sin hacer la operaciуn

Код:
new var[20 + 20 char]; //serнa como hacer 20 + 5 = 25 celdas
(lo que estб en rojo)

pero ahora si haces:

Код:
new var[(20 + 20) char]; // que serнa 40 char = 10 celdas
si te da el nъmero de celdas necesarias del resultado de la operaciуn.

que es lo mismo que hacer

Код:
new var[20 char + 20 char]; // que serнa 5 + 5 = 10 celdas
EDIT: si te iba a preguntar por quй el off :V
Reply
#5

Ah ya entendн.
O sea que, 20 char es lo mismo que 20/4 (4 que es la cantidad de bytes por celda)
Reply
#6

simplificado si.

Pero toma en cuenta que si haces:

20/4 = 5. Entonces 20 char retorna 5
21/4 = 5.25. Entonces 21 char retorna 6
22/4 = 5.5. Entonces 22 char retorna 6
23/4 = 5.75. Entonces 23 char retorna 6
24/4 = 6. Entonces 24 char retorna 6
25/4 = 6.25. Entonces 25 char retorna 7

y asн sucesivamente
Reply
#7

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
No entendi ni un pedo lo primero jajaja, pero segun leн es un bug del compilador.
Igual ya entiendo lo segundo +6

EDIT: no se de donde salio ese tag offtopic jajaja
Reply
#8

Lo que voy a preguntar no tiene nada que ver con lo que preguntу Enzo, pero ya que estб el tema, pregunto jajaja.

їEs de mucha ayuda declarar las variables con char? por ejemplo: new var[MAX_PLAYERS char];

їTendrб algъn tipo de efecto en la memoria del sistema si declaro todas las variables del jugador con char?
Reply
#9

Por lo que sй "char" utiliza menos memoria, pero acepta valores que estбn en la.tabla ASCII, o sea del 0-255
Reply
#10

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
Por lo que sй "char" utiliza menos memoria, pero acepta valores que estбn en la.tabla ASCII, o sea del 0-255
Pawn, lenguaje de 5ta, usando o no char sera la misma mierda, es un asco.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)