遇到的问题
#include <stdio.h>
#define THREEMONTH (90*24*3600)
int main()
{
/* 我的第一个 C 程序 */
long long int iTest = THREEMONTH*1000;
printf("[%lld]\n",iTest );
return 0;
}
以上代码期望输出应该是:
[7776000000]
实际输出却为:
[-813934592]
/usercode/file.cpp: In function ‘int main()’:
/usercode/file.cpp:8:35: warning: integer overflow in expression [-Woverflow]
long long int iTest = THREEMONTH*1000;
原因
在进行运算时一定要注意类型问题,(90 * 24 * 3600)结果默认是32位的,会产生溢出,一定要进行强制类型转换。
#define THREEMONTH (long long int)(90243600)