" en C ++?'/> " en C ++?'/> " en C ++?'/> Qu'est-ce que l'opérateur "->" en C ++? | abulletproofidea.com

Question Qu'est-ce que l'opérateur "->" en C ++?


Après avoir lu Caractéristiques cachées et coins sombres de C ++ / STL sur comp.lang.c++.moderated, J'ai été complètement surpris que l'extrait suivant compilé et travaillé dans Visual Studio 2008 et G ++ 4.4.

Voici le code:

#include <stdio.h>
int main()
{
    int x = 10;
    while (x --> 0) // x goes to 0
    {
        printf("%d ", x);
    }
}

Je suppose que c'est C, puisque cela fonctionne aussi dans GCC. Où est-ce défini dans la norme, et d'où vient-il?


7773


origine


Réponses:


--> n'est pas un opérateur. Il s'agit en fait de deux opérateurs distincts, -- et >.

Le décrément du code du conditionnel x, en revenant xvaleur originale (non décrémentée), puis compare la valeur d'origine avec 0 en utilisant le > opérateur.

Pour mieux comprendre, la déclaration pourrait être écrite comme suit:

while( (x--) > 0 )

7470



Ou pour quelque chose de complètement différent ... x diapositives à 0

while (x --\
            \
             \
              \
               > 0)
     printf("%d ", x);

Pas si mathématique, mais ... chaque image peint mille mots. ...


2373



C'est un opérateur très compliqué, donc même ISO / IEC JTC1 (Comité Technique Conjoint 1) placé sa description dans deux parties différentes de la norme C ++.

Blague à part, ils sont deux opérateurs différents: -- et > décrit respectivement aux §5.2.6 / 2 et §5.9 de la norme C ++ 03.


2221



C'est équivalent à

while (x-- > 0)

1142



x peut aller à zéro encore plus vite dans la direction opposée:

int x = 10;

while( 0 <---- x )
{
   printf("%d ", x);
}

8 6 4 2

Vous pouvez contrôler la vitesse avec une flèche!

int x = 100;

while( 0 <-------------------- x )
{
   printf("%d ", x);
}

90 80 70 60 50 40 30 20 10

;)


859



Ses

#include <stdio.h>
int main(void){
     int x = 10;

     while( x-- > 0 ){ // x goes to 0

       printf("%d ", x);
     }

     return 0;
}

Juste l'espace rend les choses drôles, -- décrémente et > compare.


498



L'utilisation de --> a une pertinence historique. La décrémentation était (et est toujours dans certains cas) plus rapide que l'incrémentation sur l'architecture x86. En utilisant --> suggère que x va 0et fait appel à ceux qui ont des antécédents mathématiques.


371