关于int型数据溢出的问题
题目:系统产生一个1~100之间的随机数,根据用户输入的数字判断大小,直到输入的值与该随机数相等;并统计用户输入数字的次数。我用的是VC2010
代码如下所示:
#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
void main()
{
char again; //again是否继续游戏
int num,h,g_time; //num是系统产生的随机数,h是用户输入的数字,g_time是用户猜测次数
Loop: h=0,g_time=0;
srand(static_cast<unsigned int>(time(0)));
num=(rand()%100)+1;
cout<<"系统产生的随机数在1~100之间(包括)"<<endl;
cout<<num<<endl;
while(h!=num)
{
cout<<"请输入您猜测的数字:";
cin >> h;
g_time++;
if(h==num)
break;
else if(h>num)
cout<<"您输入的值 偏大.."<<endl;
else
cout<<"您输入的值 偏小.."<<endl;
}
cout<<"恭喜您猜对了!! 您一共猜了 "<<g_time<<" 次!!"<<endl;
cout<<"如果您想要再玩一次,请输入y ,否则请输入其他字母结束:";
cin>>again;
if(again=='y')
goto Loop;
else
cout<<"感谢您的参与,再见!!"<<endl;
}
int型数值上限是2147483647,当我输入的数字比它大时,程序进入了死循环,不停得输出:
请输入您猜测的数字:您输入的值 偏小..
请输入您猜测的数字:您输入的值 偏小..
请输入您猜测的数字:您输入的值 偏小..
请输入您猜测的数字:您输入的值 偏小..
请输入您猜测的数字:您输入的值 偏小..
请输入您猜测的数字:您输入的值 偏小..
请输入您猜测的数字:您输入的值 偏小..
........
请问为什么循环中会跳过了cin >> h 这一步,还是说内存中的数据是什么特殊情况呢?