Maison > Article > développement back-end > La différence entre i++ et ++i et exemples
La différence entre i++ et ++i et exemples
La différence entre les commandes i++ et ++i sont :
1. L'ordre d'affectation est différent
++ i est ajouté en premier puis attribué ; i++ est attribué en premier puis ajouté ++i et i++ sont tous deux complétés en deux étapes ; .
Parce que ++i est attribué à l'étape suivante, il peut être utilisé comme variable pour l'affectation en cascade, ++i = a =b, c'est-à-dire que ++i est une lvalue ; i++ Il s'agit d'un incrémentation automatique, pas d'une lvalue.
L'image peut être comprise comme i++ fait d'abord d'autres choses, puis ajoute 1 à elle-même, et ++i ajoute d'abord 1 à elle-même, puis fait d'autres choses.
Apprentissage recommandé : Tutoriel vidéo en langue c
Par exemple :
a = ++i, équivalent à i= i +1; a = i;
a = i++, ce qui équivaut à a = i=i+1;
2. >Par exemple, i=3, b=i++ signifie b=3, et une fois terminé, i devient 4. b=++i signifie que i++ devient 4 en premier, puis b=4 ++i est plus efficace. que je++ certains. D'une manière générale, dans le domaine des boucles, il n'y a pas de grande différence entre les deux, mais vous devez faire attention à son cycle de vie et au changement de la valeur i dans le déroulement du programme.
3. i++ ne peut pas être utilisé comme lvalue, mais ++i peut.La lvalue est la valeur de l'expression correspondant à l'objet avec une certaine adresse de stockage dans la mémoire, et la rvalue est la valeur de toutes les expressions qui ne sont pas des lvalues. De manière générale, une lvalue est une variable qui peut être placée sur le côté gauche d'un symbole d'affectation.
Mais le fait de savoir si une valeur peut lui être attribuée n'est pas la base pour distinguer les lvalues des rvalues. Par exemple, la valeur const lvalue de C++ n'est pas attribuable ; alors qu'une valeur rvalue en tant qu'objet temporaire peut être autorisée à être attribuée. La différence fondamentale entre les lvalues et les rvalues est de savoir si l'adresse & l'opérateur est autorisé à obtenir l'adresse mémoire correspondante.
Par exemple :
int i = 0; int *p1 = &(++i);//正确 int *p2 = &(i++);//错误 ++i = 1;//正确 i++ = 1;//错误
Site Web PHP chinois, un grand nombre de tutoriels
Introduction à la programmationCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!