C ++ if语句似乎忽略了参数

时间:2011-05-31 13:03:41

标签: function if-statement arguments

这是代码。

bool b_div(int n_dividend)
{
    for (int iii = 10 ; iii>0 ; iii--)
    {
        int n_remainder = n_dividend%iii;
        if (n_remainder != 0)
         return false;
        if (iii = 1)
         return true;

    }
}

在测试了我为程序制作的这个函数之后,函数似乎停在了if(n_remainder!= 0)部分。现在,函数应该测试函数所接受的数字是否可以除以10到1之间的所有数字。(直到它返回true才会得到数字)我知道它的第一个数字是2520但是甚至在这个数字在if(n_remainder!= 0)处停止。所以我希望得到一些建议!我无法排除故障!我应该寻找的任何链接或单词都很棒!我仍然是编程的新手,所以任何你可以给予学习的帮助都会摇滚!谢谢!

2 个答案:

答案 0 :(得分:9)

将您的最后一个if语句更改为:

if (iii == 1)
  return true;

目前,您只有一个等号,它将变量iii设置为1,并且始终为true。通过使用双等于它将比较iii和1。

答案 1 :(得分:3)

除了SC Ghost的答案之外,您实际上还可以更多地清理您的功能:)

bool b_div(int n_dividend) {
    for (int i = 10 ; i > 1 ; i--) {
        int n_remainder = n_dividend % i;
        if (n_remainder != 0) {
            return false;
        }
    }
    return true;
}

一些注释,

  1. 模数1将始终为零,因此您只需要在i > 1
  2. 时进行迭代
  3. 如果for循环不是if(i == 1),您可以在for循环后完全删除return true检查并始终return false。它基本上消除了不必要的检查。
  4. 我认为将你的迭代器iii命名为i更为标准,我更喜欢括号,就像我上面写的那样(这当然完全取决于个人喜好,随你做)