问题:非常简单的一句话
long long Test;
test = 2100000 * 2100000;
按道理结果应该为:4410000000000
实际值为:-931412992
用程序员计算器看一下,很明显是把计算值默认当做了32位,溢出了。
使用强制类型转换:
test = (long long)2100000 * 2100000;
可以得到正确的结果。
我纳闷儿的是,这个默认32位结果是哪里定义的?VS2013哪里可以设置吗?
ps:这个不起眼的问题折腾了我一整天,谁能想到这个地方会出Bug呢,还以为算法出了大问题,特此记录一下。小心使得万年船~~~