• 07 Juillet 2025, 12:17:41


Auteur Sujet: Variables unsigned  (Lu 1265 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Variables unsigned
« le: 22 Avril 2009, 19:53:10 »
Salut,
pour stocker des couleurs j'aurais besoin de créer des array et variables unsigned, comment faire svp ? :)

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Variables unsigned
« Réponse #1 le: 24 Avril 2009, 10:59:16 »
Il n'y a qu'un seul type de variable en PAWN.
Et ce type permet d'accueillir aussi bien des valeurs signed que des valeurs unsigned. La différenciation se fait au moment de l'utilisation.

Pour les couleur par exemple, la plupart des couleurs contenant beaucoup de rouge sont de valeurs négatives (par exemple 0xFFFF00AA) mais les fonction qui admettent une couleur comme paramètre s'en accommodent très bien.

Donc définir un tableau de couleurs est très simple :
new Couleurs[3] = {0XFF0000AA, 0x00FF00AA, 0x0000FFAA};
++
Syg
Courtesy of GtaManiac

Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Re : Variables unsigned
« Réponse #2 le: 24 Avril 2009, 14:38:55 »
D'accord merci. :)
Mais quand tu dis qu'il n'y a qu'un seul type de variable, tu parles juste du fait qu'il n'y a pas de variables unsigned ? Dans un tutoriel d'Y_Less il utilisait des variables char.
http://forum.sa-mp.com/index.php?topic=78026.msg507347#post_packed

+

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Variables unsigned
« Réponse #3 le: 24 Avril 2009, 15:02:21 »
s' il utilise les char et le point d interrogation c' est pour compresser le string voila =D



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Variables unsigned
« Réponse #4 le: 24 Avril 2009, 19:32:46 »
Salut,

si j'ai bien compris, ce que Syg dit c'est que les variables en PAWN peuvent être unsigned et signed dépendant des besoins, la machine en décidera

sinon, Y_Less semblait plutôt dire que le char est en quelque sorte une fonction qui renvoie le quart de la valeur la suivant (si j'ai bien lu ^^)

new tmp[char 128];
ce code corresponderais donc à :

new tmp[32];
++Sim++





Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Re : Variables unsigned
« Réponse #5 le: 25 Avril 2009, 14:50:17 »
Euh non, il dit qu'elles prennent 4 fois moins de places en mémoires.

En C un int peut aller entre un peu moins de -2 milliards et un peu plus de 2 milliards (-2^32 à 232-1 exactement) (pareil pour une variable en Pawn), un char peut aller de -127 à 128.

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Variables unsigned
« Réponse #6 le: 25 Avril 2009, 15:48:54 »
salut,

alors dans ce cas la taille totale est divisée par quatre...si l'on compte les bits

mais faudrait être fou (ou plutôt audacieux) pour tenter de séparer chaque entier en quatre selon les bit (boulot énorme...)

merci Bayshore, il s'agit du bout que j'avais le moins compris ^^

++Sim++





Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Variables unsigned
« Réponse #7 le: 25 Avril 2009, 23:28:49 »
Sim, BayShore et toi dîtes la même chose.
En fait la notation [char 128] sert simplement à dire que puisqu'on va stocker des caractères ASCII dans notre tableau, il n'est pas utile de prendre 4 octets par caractère alors qu'un seul octet suffit. Ceci sert, comme le dit sasuke78200 à compresser les chaînes et à gagner de la place en mémoire.

Donc Text[char 128] est une chaîne de 128 caractères qui ne prend que 128 octets en mémoire soit la même taille en mémoire que Text[32].
Pour info, Text[128] prendra 128*4=512 octets en mémoire (dont les 3/4 ne servent à rien).

Maintenant, la plupart d'entre nous utilisons PAWN sur PC où la mémoire n'est pas un problème et il n'est donc pas très utile (et judicieux) de le compresser les chaînes.
Il faut juste avoir en tête que PAWN n'est pas propre à SAMP et qu'il est utilisé dans des applications tournant sur des machines autres que des PC où la mémoire se limite parfois à quelques Ko.

++
Syg
Courtesy of GtaManiac