9412 votes

Quel est le nom de la "-->" opérateur?

Après la lecture de Fonctionnalités Cachées et les Coins Sombres de C++/STL sur comp.lang.c++.animé, j'ai été totalement surpris qu'il compilé et travaillé à la fois dans Visual Studio 2008 et G++ 4.4.

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 le C, car il fonctionne dans GCC. Où est-ce que définis dans la norme, et où est-il venu?

9116voto

Charles Salvia Points 28661

Ce n'est pas un opérateur -->. C'est deux opérateurs distincts, -- et >.

Votre code condition est décrémentation x, tandis que le retour de xs original (pas décrémenté), puis en comparant la valeur d'origine avec 0 à l'aide de l' > de l'opérateur.

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

while( (x--) > 0 )

2460voto

Kirill V. Lyadvinsky Points 47627

C'est très compliqué de l'opérateur, de sorte que même la Norme C++ comité placé sa description dans deux parties différentes de la Norme.

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

1346voto

Jay Riggs Points 30783

C'est l'équivalent de

while (x-- > 0)

571voto

RageZ Points 15212

C'est

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

Juste l'espace de rendre les choses de l'air bizarre, -- décrémente et > compare.

452voto

Matt Joiner Points 29194

L'utilisation de l' --> a la pertinence historique. La décrémentation était (et est encore dans certains cas), plus rapide que l'incrémentation sur l'architecture x86. À l'aide de --> suggère que x va 0, et a fait appel à ceux mathématiques origines.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X