SA-MP Forums Archive
[Off] [Duda] sizeof utilizando "char". - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [Off] [Duda] sizeof utilizando "char". (/showthread.php?tid=606165)



[Duda] sizeof utilizando "char". - Swedky - 30.04.2016

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)


Respuesta: [Duda] sizeof utilizando "char". - aoEXE - 30.04.2016

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'.


Respuesta: [Duda] sizeof utilizando "char". - Swedky - 30.04.2016

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


Respuesta: [Duda] sizeof utilizando "char". - aoEXE - 30.04.2016

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


Respuesta: [Duda] sizeof utilizando "char". - Swedky - 30.04.2016

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


Respuesta: [Duda] sizeof utilizando "char". - aoEXE - 30.04.2016

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


Respuesta: [Duda] sizeof utilizando "char". - OTACON - 01.05.2016

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



Respuesta: [Duda] sizeof utilizando "char". - Juance - 02.05.2016

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?


Respuesta: [Duda] sizeof utilizando "char". - Swedky - 02.05.2016

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


Respuesta: [Duda] sizeof utilizando "char". - Parka - 02.05.2016

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.