突破取值范围,该如何解决

突破取值范围
{int n,b,s;
  s=0;
  cin>>n;  
while(n)
{b=n%10;
n=n/10;
s=s+b;
}
cout<<"s="<<s<<endl;

}
这个程序是求所输入的数的各位数字之和,然定义数据类型为整数后,对所输入的数字的范围有了限制!如何突破这个限制呢???望指教。

------解决方案--------------------
将int 改为long int
------解决方案--------------------
{ int i=1, sum=0,n,t;
cin>>n;

while(n>10) 
{
t=n%10;
sum=sum+t;
n=(n-t)/10 ;//取完个位将个位数丢去,然后再除以10那么原来的十位变成个位

}
sum=sum+n;//在最后要加上最高位
cout<<sum;
}
楼主给分吧,穷死我了
------解决方案--------------------
如果使用64位整数__int64还不够的话就只能用字符串来做转换了
------解决方案--------------------
int64或者字符串