我正在学习 C++ 并编写一些小程序。以下是一个这样的程序:
// 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 -->”直到它被杀死。(使用这个特定的输入序列,程序的输出速度会发生不规律的变化。)我还注意到,大值的输出取决于先前的合法输入以及当前非法输入的值。
这是怎么回事?(我不关心修复程序,这很容易。我想了解它。)