←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Ile zwróci sizeof?

KillerBee - zdjęcie KillerBee 21.01.2014

Witam jesli zmienna mam np.

 

new static nowa_zmienna[][] = {

"cos1",

"cos2",

"cod3",

"cod4"

}

 

i i chce pozniej uzyc np.

 

new ile

 

ile++

 

if(ile >= sizeof(nowa_zmienna) - 1) { // kod }

 

to zwroci mi 3 czy 2?


Użytkownik KillerBee edytował ten post 21.01.2014 22:29
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 21.01.2014

4
Odpowiedz

KillerBee - zdjęcie KillerBee 21.01.2014

czemu 4? dodalem  - 1 wiec powinno odjac

 

a jak dam charsmax(nowa_zmienna) to bedzie 3?


Użytkownik KillerBee edytował ten post 21.01.2014 22:44
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 22.01.2014

https://forums.allie...ad.php?t=135799

 

Tam jest wyjaśnione.

Odpowiedz

KillerBee - zdjęcie KillerBee 22.01.2014

czyli jak uzyje

 

new ile

ile++

 

for(new i = 0; i < charsmax(nowa_zmienna); i++)
if(ile >= i) ile = 0;

 

to zmienna i zwroci mi 0, 1, 2, 3 (rozmiar tablicy - 1)?

Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 22.01.2014

czyli jak uzyje
 
new ile
ile++
 
for(new i = 0; i < charsmax(nowa_zmienna); i++)
if(ile >= i) ile = 0;
 
to zmienna i zwroci mi 0, 1, 2, 3 (rozmiar tablicy - 1)?

Nie, sizeof zwraca rozmiar tablicy, więc nie, a charsmax rozmiar tablicy - 1, ale charsmax raczej wypadało by używać tylko do jednowymiarowej tablicy znaków, ale nie jest to jakaś reguła.
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 22.01.2014

Spytałeś o to ile zwróci sizeof , siezof zwróci 4 co robisz potem z tym ( odejmujesz , dodajesz , i inne cuda ) to już inna sprawa
 
PS. 4 - 1 = 3 
 
Charsmax to tak naprawdę prosta makrodefinicja 
#define charsmax(%1)  sizeof( %1 ) - 1 
Odpowiedz