【发布时间】:2010-09-20 23:13:19
【问题描述】:
我正在学习 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 -->”直到它被杀死。 (在这种特殊的输入序列下,程序的输出速度会发生不规律的变化。)我还注意到,大值的输出取决于先前的合法输入以及当前非法输入的值。
发生了什么事? (我不关心修复程序,这很容易。我想了解它。)
【问题讨论】:
标签: c++ stream infinite-loop biginteger largenumber