begin process at 2012 02 12 05:40:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > AFFECTATION D'UNE VARIABLE LORS DE LA DÉCLARATION

AFFECTATION D'UNE VARIABLE LORS DE LA DÉCLARATION


 Information sur la source

Note :
8 / 10 - par 3 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Classé sous :affectation, déclaration, variable Niveau :Débutant Date de création :26/03/2003 Date de mise à jour :05/06/2007 17:29:43 Vu :3 682

Auteur : Drakkhen

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

J'ai vu certains codes où les programmeurs veulent affecter une valeur à plusieurs variables en une seule ligne. L'affectation n'est pas correcte.

Source

  • Je m explique...
  • J ai vu, par exemple, au démarrage d un programme : A = B = C = 1
  • Où A, B et C sont trois variables numériques (Integer, Long, etc...).
  • La personne veut donc affecter la valeur 1 aux variables A, B et C.
  • Mais en résultat toutes les variables seront égales à 0. Pourquoi ?
  • Pour commencer, il faut savoir que toutes les variables numériques
  • sont par défaut égales à 0 au début d un programme.
  • La ligne A = B = C = 1 n affecte une valeur qu a la variable A, non
  • pas à B, ni à C.
  • Car quand vous voulez affecter une valeur à une variable, TOUTE
  • EXPRESSION QUI SUIT LE PREMIER SIGNE "=" sera le calcul de la valeur.
  • Donc :
  • A = B = C = 1 nous donne A = Expression( B = C = 1 )
  • L expression B = C = 1 est en fait une vérification, ou une
  • comparaison.
  • En plus clair, ça donnerait (parce qu une opération se fait
  • généralement de gauche à droite avec les mêmes opérateurs) :
  • ( B = C ) = 1
  • Ce qu il faut aussi savoir, c est que les valeurs booléennes
  • (Boolean) VRAI et FAUX (TRUE et FALSE), utilisées dans les
  • comparaisons, peuvent aussi avoir une valeur numérique qui sont
  • -1 pour TRUE, et 0 pour FALSE.
  • On fait la vérification... Au démarrage du programme, A, B et C sont
  • égaux à 0 comme je l ai dit au début.
  • B = C ? --> 0 = 0 ? --> TRUE
  • Donc on enlève "( B = C )" de l expression.
  • ( B = C ) = 1 --> ( TRUE ) = 1
  • Etant donné que la prochaine comparaison se fait entre une valeur
  • booléenne et un chiffre, la valeur TRUE est convertie en chiffre,
  • donc -1
  • -1 = 1 ? --> FALSE
  • FALSE est le résultat de l expression. On peut maintenant revenir à
  • la ligne complète :
  • A = B = C = 1 --> A = ( B = C ) = 1 --> A = ( 0 = 0 ) = 1
  • A = TRUE = 1 --> A = ( TRUE = 1 ) --> A = ( -1 = 1 )
  • A = FALSE --> A = 0
  • On affecte donc la valeur 0 à A, et les variables B et C ne changent
  • pas. Voilà.
Je m explique...

J ai vu, par exemple, au démarrage d un programme : A = B = C = 1
Où A, B et C sont trois variables numériques (Integer, Long, etc...).

La personne veut donc affecter la valeur 1 aux variables A, B et C.
Mais en résultat toutes les variables seront égales à 0. Pourquoi ?

Pour commencer, il faut savoir que toutes les variables numériques
sont par défaut égales à 0 au début d un programme.

La ligne A = B = C = 1 n affecte une valeur qu a la variable A, non
pas à B, ni à C.
Car quand vous voulez affecter une valeur à une variable, TOUTE
EXPRESSION QUI SUIT LE PREMIER SIGNE "=" sera le calcul de la valeur.
Donc :

A = B = C = 1   nous donne   A = Expression( B = C = 1 )

L expression B = C = 1 est en fait une vérification, ou une
comparaison.
En plus clair, ça donnerait (parce qu une opération se fait
généralement de gauche à droite avec les mêmes opérateurs) :

( B = C ) = 1

Ce qu il faut aussi savoir, c est que les valeurs booléennes
(Boolean) VRAI et FAUX (TRUE et FALSE), utilisées dans les
comparaisons, peuvent aussi avoir une valeur numérique qui sont
-1 pour TRUE, et 0 pour FALSE.

On fait la vérification... Au démarrage du programme, A, B et C sont
égaux à 0 comme je l ai dit au début.

B = C ?  -->  0 = 0 ?  -->  TRUE

Donc on enlève "( B = C )" de l expression.

( B = C ) = 1  -->  ( TRUE ) = 1

Etant donné que la prochaine comparaison se fait entre une valeur
booléenne et un chiffre, la valeur TRUE est convertie en chiffre,
donc -1

-1 = 1 ?  -->  FALSE

FALSE est le résultat de l expression. On peut maintenant revenir à
la ligne complète :

A = B = C = 1  -->  A = ( B = C ) = 1  -->  A = ( 0 = 0 ) = 1
A = TRUE = 1  -->  A = ( TRUE = 1 )  -->  A = ( -1 = 1 )
A = FALSE  -->  A = 0

On affecte donc la valeur 0 à A, et les variables B et C ne changent
pas. Voilà.

 Conclusion

Je sais pas si j'ai été clair pour ceux qui ne connaiss(ai)ent pas ça. Dans le cas contraire, postez vos questions.


 Historique

05 juin 2007 17:29:45 :
Arrangement du texte.

 Sources du même auteur

Source avec Zip Source avec une capture BENCHMARK DE BOUCLES
Source avec Zip CHRONOGRAPHE MUSICAL

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) EXPORTER LES IMAGES DE WORD ET D' EXCEL par Le Pivert
Source avec Zip Source avec une capture JEUX DE VERITÉ ET DE FIDELITÉ par billatosco
Source avec Zip IMAGELOARDER par vkitumaini
Source avec Zip Source avec une capture Source .NET (Dotnet) CREER UN CALENDRIER DE POCHE par Le Pivert
Source avec Zip RECHERCHE D'UN ENREGISTREMENT DANS UNE DATATABLE ET POSITION... par erdna

 Sources en rapport avec celle ci

Source avec une capture [VB6] TRANSMETTRE UN TABLEAU PAR PROCÉDURE par magicgus
Source avec Zip GESTION DYNAMIQUE DES ITEMS - BIEN PLUS INTERESSANT QUE LES ... par asimengo
Source avec Zip Source avec une capture CALCUL DE L'INDICE DE MASSE CORPORELLE (BMI) par robapt
Source avec Zip Source avec une capture EVALUATION D'EXPRESSION - FONCTION EVAL AVEC GESTION DE VARI... par Renfield
Source avec Zip BOULE par rico17

Commentaires et avis

Commentaire de msohet le 26/03/2003 09:53:36

bien vu

Commentaire de Proger le 26/03/2003 11:39:00

A = B = C = 1
mais aussi A = B > C
ou encore A = B > C And D < C
bref, tout cela sert a plaçer dans une variable le résultats d'opérations booléenne, qui sont des opérations mathématique aussi importante en prog que les additions et soustraction.
Cela devient interessant de faire un
A = B = C
do
...
if a then
...
loop

qui sera plus rapide que
do
...
if B = C then
...
loop

mauvais exemple, mais l'idée est là.

Commentaire de Jujufouq le 09/04/2003 21:40:46

Là, par contre, c'est une source intéressante.

Commentaire de ABF le 04/06/2007 17:02:47

SAlut, comment peut t'on définir un tableau d'entier

par défaut il est initialisé à 0, comment lui dire de s'initialiser à 3 ?
le tableau vide (20,5) : toutes les "cases" seront à 0 mais si on souhaites les déclarer à 3 est t'on obliger defaire une boucle et de tout mettre à 3 ? (très long pour un gros tableau !!)

Merci

++

Commentaire de Proger le 05/06/2007 12:43:47

Oui, la grosse boucle est la seule "bonne" solution. Quand ton programme est compilé, c'est rapide. Surtout si tu n'as qu'une dimension.

Cependant tu peux aussi utiliser l'API RtlFillMemory si vraiment la boucle te dérange (ou que tu as plusieurs dimensions à ton tableau), mais ca rempli tous les octets (byte) sans distinction integer ou long.

Une dernière astuce si ton tableau est vraiment de grande taille, tu crées une ligne avec des 3, et tu utilises l'API RtlCopyMemory pour le copier à chaque "colonne"...
Cependant j'insiste qu'une fois compilé, c'est la boucle "mano" qui sera le plus rapide.

Commentaire de ABF le 06/06/2007 10:29:53

SAlut et Merci Proger

C'est méthode "mano" que j'ai employée !

++

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Déclaration de variable : HELP !!!!!!!!!!!!!! [ par Duke76 ] Salut , Mon probleme est simple :Comment déclarer des variables qui seront utilisables dans TOUS les modules , TOUTES les feuilles , TOUTES les procéd lecture et decomposition de données depuis un fichier sequentiel [ par happex ] Bonjour, cela fait quelques temps que je galère sur un programme simple dans le principe et ça m'énerve. Voici donc mon problème, je voudrais lire un Déclaration de variable [ par JeanFrancis68 ] Bonjour à tous...Y'a t-il possibilité de déclarer des variables de manières conditionnelles??? Ex : Si X = 1 alors déclaration d'une chaine Déclaration de variable [ par pierre4064 ] C'est surement une question bète mais je n'arrive pas a trouver comment déclarer une variable de manière a ce qu'elle soit accessible depuis d'autres affectation d'un champs de valeurs [ par damd ] salut a tousj'aurai aime savoir comment affecter a une variable (texte, constant) un champs de valeur, pour dire que cette variable peut prendre soit déclaration de type tableau de tableaux... [ par mahana ] Est-il possible de créer sous visual basic 6.0 un type de variable taableau contenant lui-même des tableaux..ex: type1 = tableau de 15 élémentset type déclaration de variable [ par alfarabi ] alfacomment faire en sorte qu'une variable soit prise en compte dans plusieurs MDIchildmerci Déclaration de Variable [ par scoubi7 ] Bonjour,J'ai un module appellant un UserForm, qui quand on clic ou sur :-un bouton A se unload et poursuit le 1er module,-un bouton B se unload et act déclaration d une variable de type Form1.CurrentY = 7080 [ par Teclis01 ] Form1.CurrentY = 7080                     'on chan affectation d'une date dans une variable [ par oxram ] Bonsoir je ne comprend pas comment affecter une date dans une variable j'ai essayé de la maniere suivante mais ça ne marche pas dim dteMax&n


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales