为什么控制台没有输出正确的答案?

时间:2016-10-04 17:58:48

标签: c++ math

我有2个数字,n = 1000000000000,j = 1.当我写

 cout << n / j << endl;

控制台输出正确的答案,1000000000000。 但是,当我这样做时:

int d = n / j;
cout << d << endl;

控制台输出3567587328。 有人可以解释为什么会发生这种情况,我该怎么办?

3 个答案:

答案 0 :(得分:0)

您使用的值大于整数变量可以存储的最大值。

如果你需要用如此大的数字进行算术运算,那么你将不得不使用处理这些数字的特殊类。也许您的C ++实现支持long long数据类型?

答案 1 :(得分:0)

你可以拥有的最大int是2,147,483,647,它比那里的10 ^ 12小,所以你有一个integer overflow。您可以使用int而不是long long

答案 2 :(得分:0)

尝试使用long。

long long d = n / j;
cout << d << endl;