これは私のプログラムの抜粋です。私はint8_t
データ型を使用していますが、入出力に関するいくつかの問題があります。どうやら、プログラムでint8_t
を使用すると、g++
コンパイラには-std=c++11
フラグが設定されている必要があります。私はそれをしましたが、ランタイムエラーがあります。ここに私のコードは次のとおりです。C++ 11 int8_tバグ入力/出力
$ ./a.out
Enter a number [1-100]: 95
You entered: 9
9/10 = 5
$
シェルプロンプトである:ここで
#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;
}
は、プログラムの出力があります。とにかく、最初の数字だけが入力ストリームから読み込まれているようです。たとえそうであっても、整数除算9/10
は5
ではなく0
を返します。このプログラムは95/10
を行い、結果は9
です。理論的には、このプログラムはうまくいくはずですが、除算演算子でさえもバグです。 int8_t
の代わりにint
を使用すると、プログラムが意図したとおりに動作することに注意してください。この場合、誰かがちょうど私にint
データ型を使用してそれを処理するように教えてくれると思われます。しかし、私たちはソフトウェアエンジニアです!私はint8_t
データ型に本質的に欠陥があるかどうかを知りたいと思います。なぜそれは適切なユーザーの入力を受け入れることができないだけでなく、除算演算子を壊す!使用する価値のあるプログラミング言語は、そのような不完全性から解放されていなければなりません。そして、私はC++が十分に普及していると思って、最終的に誰かがint8_t
に何らかの欠陥があることに気づいたと思います。それが私の複雑さを知る必要があるものです。