Maison  >  Article  >  développement back-end  >  La différence entre i++ et ++i et exemples

La différence entre i++ et ++i et exemples

angryTom
angryTomoriginal
2020-02-28 10:43:5064516parcourir

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 programmation

, bienvenue pour apprendre !

Ce 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn