6
votes

Comprendre l'incrémentation

Par exemple, ceci: xxx

maintenant a contient 124 et b contient 123

Je comprends que B prend la valeur d'A et a ensuite une incrémentation. Cependant, je ne comprends pas pourquoi c'est le cas. La principale raison pour laquelle les créateurs de JavaScript le voudraient cela. Quel est l'avantage à cet autre que des débutants déroutants?


6 commentaires

Il n'y a pas de différence entre JavaScript et PHP dans le comportement de l'opérateur d'incrément.


Bien que vous puissiez écrire cela en JavaScript, ce comportement est le même que la plupart (n'importe quel?) Langue de style C.


Merci à tous pour votre réponse. Donc, cela doit avoir quelque chose à voir avec la programmation orientée objet. Après avoir utilisé PHP depuis si longtemps, de la manière de la procédure, je suis venu vous attendre à ce que chaque fois qu'une variable soit sur le côté gauche de tout opérateur, il conserve toujours la valeur précédente, à moins que cela n'a été directement réaffecté. C'est une façon radicalement différente de penser pour moi et que je devrai maintenant m'habituer.


@Chad en fait non, cela n'a rien à voir avec OOP. PHP se comporte exactement de la même manière. Il s'agit d'expressions entraînant des valeurs.


Scratez la partie PHP, j'ai testé et il en informe de la même manière.


@Chad aucun manque de respect prévu; Cependant, les opérateurs post et pré-incrément sont des concepts assez basiques. Il semble que vous manquiez de nombreux fondamentaux de la programmation, tels que la différenciation des opérateurs de paradigmes. Je vous encourage tout simplement à prendre du temps pour revenir à des bases pour mieux comprendre les outils que vous utilisez.


7 Réponses :


5
votes

Notez que vous pouvez également écrire xxx

qui a l'effet que vous attendez probablement.

Il est important de réaliser qu'il y a deux choses qui se passent ici: le l'affectation et l'incrément et la langue doivent définir dans quel ordre ils se produiront. Comme nous l'avons disponible à la fois ++ a et a ++ il est logique qu'ils doivent avoir des significations différentes.

pour ceux d'entre nous d'un antécédents C, C'est assez naturel. Si PHP se comporte différemment, nous nous demandons peut-être pourquoi PHP a choisi de s'écarter de ce que nous sommes habitués à.


0 commentaires

-3
votes

Post-Incrément et pré-augmentation sont des opérateurs communs dans de nombreuses langues, JavaScript étant environ 30 ans d'être le premier. PHP prend en charge la post-incrémentation également.


0 commentaires

3
votes

++ code> peut être utilisé comme opérateur post-incrément, comme dans votre exemple, ou peut être utilisé comme opérateur de pré-augmentation si utilisé avant em> variable.

var b = ++a;


0 commentaires

1
votes

C'est la façon standard de le faire. L'opérateur postincrement attribue la valeur, puis les incréments.

La préincrèce ( ++ a ) par incrémente puis attribue.

Je ne suis pas familier avec PHP et je ne peux pas dire comment cela le fait ou pourquoi.


0 commentaires

0
votes

Lorsque vous mettez le ++ après la variable, il est incrémenté après l'affectation. Vous pouvez également mettre le ++ avant la variable et qu'il est incrémenté avant l'affectation.

JavaScript se comporte en fait exactement de la même manière que PHP pour le préfixe et l'incrémentation postfix.


0 commentaires

9
votes

C'est pourquoi cela s'appelle "opérateur post-incrémentation". Essentiellement, tout est une expression qui entraîne une valeur. A + 1 est une expression qui entraîne la valeur 124. Si vous attribuez ceci à B avec B = A + 1 , b a la valeur de 124. Si vous n'attribuez pas le résultat à quoi que ce soit, A + 1 entraînera toujours la valeur 124, il sera juste jeté immédiatement depuis que vous êtes pas "attraper" ça n'importe où.

BTW, même B = A + 1 est une expression qui retourne 124. La valeur résultante d'une expression d'attribution est la valeur attribuée. C'est pourquoi c = b = A + 1 fonctionne comme prévu.

Quoi qu'il en soit, la chose spéciale sur une expression avec ++ et - est-ce en plus de retourner une valeur, le ++ L'opérateur modifie directement la variable. Alors, que se passe-t-il lorsque vous faites b = a ++ est, l'expression a ++ renvoie la valeur 123 et incréments A . Le increntiel est d'abord renvoyé la valeur, alors incréments, tandis que le pré incrémentor ++ a premier augmente, puis renvoie la valeur. Si vous venez d'écraser A ++ par lui-même sans affectation, vous ne remarquerez pas la différence. C'est ainsi que A ++ est généralement utilisé, comme courte main pour a = A + 1 .

Ceci est assez standard.


1 commentaires

Bonne réponse. Ma pensée était la suivante: pourquoi si A = 2 et B = A + 1, nous obtenons B = 3 et A conserve sa valeur initiale. Mais AutOncrement est une caractéristique spéciale dans les langages de programmation qui ne signifie pas seulement ajouter 1 et c'est là que j'ai été confondu, mais maintenant je l'obtiens.



0
votes

++ code> avant l'appel de variable avant incromption signifie incrémenter la valeur de la variable avant d'exécuter la déclaration.
++ Code> Après la variable appelé Post-Ingrement signifie incrémenter la valeur de variable après avoir exécuté la déclaration.

Les deux incrémentes la valeur de la variable. p>

$ b = $ a ++; code> est équivalent à p>

$a=5;
echo $a++;//prints 5;

$a=5;
echo ++$a;//prints 6;


0 commentaires