Denken Sie an <<
und >>
, wenn Sie std::cout/std::cin
so verwenden:
std::cout << x
bedeutet, dass der Wert von x
std::cin >> x
bedeutet, dass der Wert in x
Beachten Sie die Richtungen, in die die Operatoren zeigen. Das sollte Ihnen einen Hinweis geben, was sie tun, wenn Sie diese Funktionen verwenden.
Der Grund, dass Sie 0 und nicht 26 erhalten, liegt daran, dass std::cin
alle nicht numerischen Zeichen von Ihrer Eingabe analysiert. Immerhin ist x
ein int, es erkennt 0x
nicht als Teil einer hexadezimalen Zahl. Es hätte das gleiche Verhalten, wenn die Eingabe 9x2
wäre (das Ergebnis wäre einfach 9
).
Ihr Code sollte lauten:
%Vor% Standardmäßig erwartet cin
eine eingelesene Zahl als Dezimalzahl. Offensichtlich ist 0x1a
keine gültige Dezimalzahl und die Konvertierung kann nicht stattfinden. Um es zum Laufen zu bringen, müssen wir den Stream-Modifikator hex
verwenden, der cin
dazu auffordert, die Zahlenumwandlung von hexadezimal statt dezimal zu erwarten.
Das Präfix 0x
ist in diesem Fall optional, daher würde die Eingabe 10
gelesen und als Dezimalzahl 16 gespeichert.