- 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à.