Frage

Während "C ++ Primer plus 5. Auflage" zu lesen, sah ich dieses Stück Code:

    cin.get(ch);
    ++ch;
    cout << ch;

Also, das wird dazu führen das folgende Zeichen nach ch anzuzeigen. Aber, wenn ich es tat so:

    cin.get(ch);
    cout << ch+1;

Nun wird cout denken ch ein int (versuchen typecasting). Also, tut warum cout so? Und warum, wenn ich 1 zu einem Zeichen hinzugefügt wird es eine Reihe produzieren ?. Und warum gibt es einen Unterschied zwischen: ch ++ und ch + 1.

War es hilfreich?

Lösung

Der Grund, in diesem Fall ist die Art der wörtlichen 1 int ist. Wenn Sie ein int und ein Zeichen hinzufügen erhalten Sie einen int, aber wenn Sie ein Zeichen erhöhen, bleibt es ein Zeichen.

Versuchen Sie folgendes:

#include <iostream>

void print_type(char)
{
    std::cout << "char\n";
}
void print_type(int)
{
    std::cout << "int\n";
}
void print_type(long)
{
    std::cout << "long\n";
}

int main()
{
    char c = 1;
    int i = 1;
    long l = 1;

    print_type(c); // prints "char"
    print_type(i); // prints "int"
    print_type(l); // prints "long"

    print_type(c+i); // prints "int"
    print_type(l+i); // prints "long"
    print_type(c+l); // prints "long"

    print_type(c++); // prints "char"

    return 0;
}

Andere Tipps

Bitte beachten Sie -. Das ist die answe auf die ursprüngliche Frage, die bearbeitet seitdem

  

Nun wird cout denken ch ein int (versuchen   typecasting).

Nein wird es nicht. Es ist nicht möglich, den Typ einer Variablen in C ++ zu ändern.

++ch;

Schritte, was auch immer ist in Kap.

ch + 1;

nimmt den Wert (Inhalt) von ch, fügt 1 zu ihm und verwirft das Ergebnis. Was auch immer in ch ist unverändert.

Die Anweisung ++ch; Schritte ch während ch + 1; nicht.

Denken Sie auch daran, dass ‚++ ch‘ wird die Schrittweite tun, bevor die Anweisung tatsächlich läuft es in ist, so dass Deshalb bleibt es ein Zeichen.

int i = 0;
cout << ++i << endl;
cout << i++ << endl;
// both will print out 1.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top