很大的数据值为什么返回是0?解决方法

很大的数据值为什么返回是0??????????
_int64   lngVal=15*pow(16,9);
为什么lngVal   的值为0???是因为数据类型容量太小吗?可是用什么类型呢?
long   int也试了,我很菜,请高手指教

------解决方案--------------------
long float就可以
------解决方案--------------------
int64在各个操作系统里实现有所不同,不过个人意见,不要使用这个东西吗,最好还是自已来控制,使用两个int来表示32位。不过如果lz比较懒的话,我想使用double没有什么问题。
------解决方案--------------------
15*pow(16,9)表示是占用了5个Byte的空间,但是可能是你的pow函数采用的不是Int64类型
你可以自己写一个支持long int的pow函数,或者直接写9个16的乘积测试一下看看

------解决方案--------------------
问题在于pow函数在计算过程中采用的是int,而其结果已经超过了int的标识范围

可以时时这么写
_int64 lngVal = (_int64)15 * (_int64)pow(16, 3) * (_int64)pow(16, 3) * (_int64)pow(16, 3)