C++ 中,超出long int范围怎么处理

C++ 中,超出long int范围怎么办!
各们大侠:
  小弟在用C++写程式,将1970年1月1日起到现在的时间化为秒数,发现已超出long int的范围,long int 最大范围为:2147483647,即使unsigned long的范围也仅到:4294967295,而小弟计算出来的数据,已超过4294967295,应该在6294967295这个范围左右,已造成溢出了,请各位大侠帮忙,指点小弟,如何定义变量,十分感谢各位,急急!!!

------解决方案--------------------
能说具体点吗?

如果函数f()返回值为unsigned long,那么即使写 unsigned long long tmp=f();也没有用的,
 这时tmp的值为 f()%maxlongint 。
不过你既然能估计范围,就加一句tmp+=maxlongint 试试
这种方法不通用的……

------解决方案--------------------
The result depends on your platform. On my platform (Linux on 32 bits i386 machine, gcc 4.2.x), unsigned long, sizeof which is 4, is enough to hold 37*365*24*3600.
------解决方案--------------------
没有实机测试过,但我觉得应该
sum=(unsigned long long)37*365*24*3600;
不然可能计算的时候,已经是按整型计算了,
(纯数字的没有试过,我记得如果数字是保存在整型变量中,是一定要先类型转换的)
再赋值给sum当然不对了。
------解决方案--------------------
sum=37*365*24*3600; 

这要看数值常量的缺省类型,这里37,365, 24, 3600应该都是long,这样他们乘积首先计算为long,然后转换为longlong,和前面大侠们说的函数返回long是一样的
所以应该是sum=(long long)37*(long long)365*(long long)24*(long long)3600; 

还有:这种功能应该用系统提供的方法写,你这种转换是不对的,为什么是365?每年又不同,用FILETIME之类的类型来做才合理