私はC++を学び、小さなプログラムを書いています。以下はそのようなプログラムの1つです。
// This program is intended to take any integer and convert to the
// corresponding signed char.
#include <iostream>
int main()
{
signed char sch = 0;
int n = 0;
while(true){
std::cin >> n;
sch = n;
std::cout << n << " --> " << sch << std::endl;
}
}
このプログラムを実行し、入力を適度に小さい絶対値に保つと、期待どおりに動作します。しかし、10000000000などのより大きな入力を入力すると、プログラムは同じ出力を繰り返し吐き出します。入力の組み合わせによっては、動作が不安定になります。例えば:
#: ./int2ch
10
10 -->
10000000000
10 -->
10 -->
10 -->
10 -->
プログラムは、殺されるまで「10->」を吐き出します。(この特定の入力シーケンスでは、プログラムの出力の速度が不規則に変化します。)また、大きな値の出力は、現在の不正な入力の値だけでなく、以前の正当な入力によって決定されることに気付きました。
どうしたの?(私はプログラムを修正することを気にしません、それは簡単です。私はそれを理解したいです。)