[c++] Was ist der Operator "->" in C ++?


Answers

Oder für etwas ganz anderes ... x gleitet auf 0

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

Nicht so mathematisch, aber ... jedes Bild sagt mehr als tausend Worte. ...

Question

Nachdem ich Hidden Features und Dark Corners von C ++ / STL auf comp.lang.c++.moderated , war ich völlig überrascht, dass der folgende comp.lang.c++.moderated sowohl in Visual Studio 2008 als auch in G ++ 4.4 kompiliert und bearbeitet wurde.

Hier ist der Code:

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

Ich würde annehmen, dass dies C ist, da es auch in GCC funktioniert. Wo ist das im Standard definiert und woher kommt es?




Absolut Geek, aber ich werde das benutzen:

#define as ;while

int main(int argc, char* argv[])
{
    int n = atoi(argv[1]);
    do printf("n is %d\n", n) as ( n --> 0);
    return 0;
}



Warum all die Komplikation?

Die einfache Antwort auf die ursprüngliche Frage ist nur:

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

Tut das Gleiche. Ich sage nicht, dass Sie es so machen sollten, aber es macht dasselbe und hätte die Frage in einem Post beantwortet.

Das x-- ist nur eine Kurzform für das obige, und> ist nur ein normaler Größer-als-Operator. Kein großes Geheimnis!

Es gibt zu viele Leute, die heutzutage einfache Dinge kompliziert machen;)




Tatsächlich wird x nachher dekrementiert und mit dieser Bedingung überprüft. Es ist nicht --> , es ist (x--) > 0

Hinweis: Der Wert von x wird geändert, nachdem die Bedingung überprüft wurde, da nachher dekrementiert wird. Einige ähnliche Fälle können auch auftreten, zum Beispiel:

-->    x-->0
++>    x++>0
-->=   x-->=0
++>=   x++>=0



-- ist der Dekrementoperator und > ist der Größer-als- Operator.

Die zwei Operatoren werden als ein einziger wie --> angewendet.




Wie auch immer, wir haben jetzt einen "geht zu" -Operator. "-->" ist leicht als eine Richtung zu erinnern, und "während x auf Null geht" bedeutet geradlinig.

Außerdem ist es auf manchen Plattformen etwas effizienter als "for (x = 10; x > 0; x --)" .




while( x-- > 0 )

ist, wie das geparst ist.




Mein Compiler wird 9876543210 ausdrucken, wenn ich diesen Code ausführe.

#include <iostream>
int main()
{
    int x = 10;

    while( x --> 0 ) // x goes to 0
    {
        std::cout << x;
    }
}

Wie erwartet. Die while( x-- > 0 ) bedeutet eigentlich while( x > 0) . Der x-- Post dekrementiert x .

while( x > 0 ) 
{
    x--;
    std::cout << x;
}

ist eine andere Art, dasselbe zu schreiben.

Es ist schön, dass das Original aussieht wie "obwohl x auf 0 geht".




Es ist gleichbedeutend mit

while (x-- > 0)



Es ist

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

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

       printf("%d ", x);
     }

     return 0;
}

Nur der Raum lässt die Dinge lustig aussehen, -- dekrementiert und > vergleicht.




Links