为什么我的整数除法长期溢出/转为负值?

时间:2011-12-20 10:39:55

标签: c++ integer

for (long long j = factored_num / 3; j > 2 || factored_num != 1; j -= 2) {

在64位计算机上,我试图计算一个数字。这个代码在long long j = factored_num时工作得很好,但是当我进行整数除法时,cout << j表明j是负数 - 我假设它溢出了。我该如何解决这个问题?

我已尝试3LLj-= 2LL等,以防它出现类型问题。同样,它肯定与分区部分有关,但我对数据类型不够熟悉,无法立即解决问题。

1 个答案:

答案 0 :(得分:2)

问题可能是最终条件。您循环,而 j超过2 factored_num不是1,因此如果factored_num未成为1,则循环不会结束,j将继续减少到负数。

我希望条件为j > 2 && factored_num != 1,即如果j为2或更小,您希望结束(为什么2; 2是有效因素)或factored_num为1(因此没有任何其他因素)。