GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: scott1 le 15 Octobre 2010, 22:24:45
-
Bonsoir à toutes et à tous,
J'ai oublier comment on appelais une fonction qui commençait par
for(new i = 0; i != sizeof(X); i++ )
Merci d'avance
-
J'ai pas très bien compris ^^
-
Une boucle ?
-
Faux, sizeof() donne la taille que la variable prend dans la mémoire en octets, mais en pawn cette fonction ne donne pas la valeur exacte.
Exemple:
new var = 5;
printf("Taille dans la mémoire de var = %d\n", sizeof( var ) );
cela affiche -> Taille dans la mémoire de var = 1
Ce qui est normalement faux, vu qu'une variable en pawn est ( presque ? ) toujours en 4octets ( 32bits ), donc normalement cela devrai affiché
Taille dans la mémoire de var = 4
alors qu'en C
int main( int argc, char ** argv )
{
int var = 5;
printf("Taille dans la mémoire de var = %d\n", sizeof( var ) );
system( "pause" );
return 0;
}
on obtient
Taille dans la mÚmoire de var = 4
Appuyez sur une touche pour continuer...
et si on fait
new var[4] = {5, 4, 3, 2};
printf("Taille de var dans la mémoire %d\n", sizeof( var ) );
ce code affiche -> Taille de var dans la mémoire 4
alors qu'en C
int main( int argc, char ** argv )
{
int var[4] = {5, 4, 3, 2 };
printf("Taille dans la mémoire de var = %d\n", sizeof( var ) );
system( "pause" );
return 0;
}
ce code affiche:
Taille dans la mÚmoire de var = 16
Appuyez sur une touche pour continuer...
donc, on voit qu'en pawn, sizeof() divise par 4 la taille de la variable dans la mémoire, et je n'ai jamais compris pourquoi ^^
-
Voila s'est une boucle, ce qui était a l'interieur s'était n'importe quoi ^^
-
On appel pas ça une fonction, mais une instruction, voila pourquoi je n'ai pas compris ^^
-
donc, on voit qu'en pawn, sizeof() divise par 4 la taille de la variable dans la mémoire, et je n'ai jamais compris pourquoi ^^
Sans doute pour éviter à tout le monde de s'emmerder à diviser par 4 à chaque fois.
-
Ouais, peut être, mais ça emmerde pas de diviser par 4, il y a juste à écrire /4
-
Salut,
Ouais, peut être, mais ça emmerde pas de diviser par 4, il y a juste à écrire /4
et en plus le code n'en est pas plus lent comme en PAWN (en C/++ aussi j'imagine), la valeur de sizeof est déterminée à la compilation, donc constante. Or les opérations sur les constantes (tel que sizeof()/4, MAX_PLAYERS/100) sont calculées à la compilation (si le compilo est moindrement "bon", normalement il optimise de quelques façons et ceci en fait partie).
++Sim++