我正在开发一个非常小的程序来查找 C++ 中整数的除数。我的 main 方法几乎将 int 转换为 var,并以 int 作为参数调用 factor 方法。这是代码:
void factor(int num)
{
for(int x = 0; x < ((num + 2) / 2); x++)
{
if((num % x) == 0)
{
cout << x << " ";
}
}
}
程序总是在 factor() 内崩溃。如果我使用此代码,它运行良好:
void factor(int num)
{
for(int x = 0; x < ((num + 2) / 2); x++)
{
{
cout << x << " ";
}
}
}
所以问题出在if((num % x) == 0)
. 当我将该行更改为if((num % 2) == 0)
orif((num % 5) == 0)
时,它会产生正确的结果(我使用 32 作为测试输入)。
几年前我学习了 C++ 并忘记了其中的大部分内容,在遇到这个问题之后,我逐字逐句地复制了我之前解决这个问题的解决方案(有效)。但是每当我尝试访问循环计数器时,程序仍然会崩溃。
我在 Arch Linux 64 位上使用 Code::Blocks 13.12 和 GCC "4.9.0 20140604 (prerelease)"。