Dies ist ein Code aus meinem Programm geschnitten. Ich verwende den Datentyp int8_t
, und ich habe einige Probleme mit der Eingabe/Ausgabe. Offensichtlich erfordert die Verwendung von int8_t
im Programm die -std=c++11
-Flag für den g++
Compiler festgelegt werden. Ich habe das gemacht, aber es gibt Laufzeitfehler. Hier ist mein Code:C++ 11 int8_t fehlerhafte Eingabe/Ausgabe
#include <iostream>
#include <cstdint>
using std::cout;
using std::cin;
using std::endl;
int main() {
int8_t number;
cout << "Enter a number [1-100]: ";
cin >> number;
cout << "You entered: " << number << endl;
cout << number << "/10 = " << (number/10) << endl;
return 0;
}
Hier ist die Ausgabe des Programms:
$ ./a.out
Enter a number [1-100]: 95
You entered: 9
9/10 = 5
Die $
ist die Shell-Prompt. Wie auch immer, es scheint, dass nur die erste Ziffer aus dem Eingabestrom gelesen wird. Trotzdem sollte die Ganzzahl-Division 9/10
0
, nicht 5
zurückgeben. Dieses Programm soll 95/10
tun und ein Ergebnis von 9
zurückgeben. Theoretisch sollte dieses Programm funktionieren, aber anscheinend ist sogar der Divisions-Operator fehlerhaft. Ich sollte eine Notiz machen, dass die Verwendung von int
anstelle von int8_t
bewirkt, dass das Programm wie vorgesehen funktioniert. Ich vermute, dass in diesem Fall jemand mir sagen würde, dass ich den int
Datentyp verwenden und damit umgehen soll. Aber wir sind Softwareentwickler! Ich würde gerne wissen, ob der int8_t
Datentyp inhärent fehlerhaft ist. Warum kann es nicht richtige Benutzereingaben akzeptieren, sondern bricht auch die Division Operator ?! Jede Programmiersprache, die es wert ist, verwendet zu werden, muss frei von derartigen Unvollkommenheiten sein. Und ich denke, dass C++ so populär ist, dass irgendwann jemand erkannte, dass int8_t
in gewisser Hinsicht fehlerhaft ist. Das ist etwas, das ich kennen muss, um die Feinheiten von.