Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
Connexion avec identifiant, mot de passe et durée de la session

 
avancée

254726 Messages dans 14037 Fils de discussion- par 6623 Membres - Dernier membre: Magicien

24 Mai 2012 à 06:56:00
GTAOnline.frSan Andreas MultiplayerScripting SA-MP [Pawn center] (Modérateurs: S!m, Xartrick)Variables unsigned
Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: Variables unsigned  (Lu 368 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Bayshore
Hors ligne Hors ligne


GTAOnline Addict
*

Messages: 898


« 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 ? Sourire
Journalisée
Syg
Expert programmeur C/C++/PAWN
Hors ligne Hors ligne


Administrateur
GTAOnline Legend
*

The GTAOnline Jesus

Messages: 3760


« Répondre #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 :
Code:
new Couleurs[3] = {0XFF0000AA, 0x00FF00AA, 0x0000FFAA};

++
Syg
Journalisée

Courtesy of GtaManiac
Bayshore
Hors ligne Hors ligne


GTAOnline Addict
*

Messages: 898


« Répondre #2 le: 24 Avril 2009 à 14:38:55 »

D'accord merci. Sourire
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

+
Journalisée
Ssk
Développeur d'Open SA-MP
Hors ligne Hors ligne


Sous-admin
GTAOnline Legend
*

Open-SA-MP - Unlimited Experience

Messages: 3731


WWW



sasuke78200

« Répondre #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
Journalisée






Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog
S!m
Hors ligne Hors ligne


Moderateur
GTAOnline Fan Boy
*

Messages: 2260


« Répondre #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 ^^)

Code:
new tmp[char 128];

ce code corresponderais donc à :

Code:
new tmp[32];

++Sim++
Journalisée





Bayshore
Hors ligne Hors ligne


GTAOnline Addict
*

Messages: 898


« Répondre #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.
Journalisée
S!m
Hors ligne Hors ligne


Moderateur
GTAOnline Fan Boy
*

Messages: 2260


« Répondre #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++
Journalisée





Syg
Expert programmeur C/C++/PAWN
Hors ligne Hors ligne


Administrateur
GTAOnline Legend
*

The GTAOnline Jesus

Messages: 3760


« Répondre #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
Journalisée

Courtesy of GtaManiac
Pages: [1]   Haut de page
Imprimer
Aller à:  

Theme créé par padexx et modifié par GTAOnline.fr
Page générée en 0.171 secondes avec 23 requêtes.
Forum GTAOnline.fr 2.0 | Design par : Lalu et GtaManiac
Merci a toute la communaute pour son support !
Copyright © 2004-2012 - GTAOnline.fr | GTAPro.com | Contact