Function C++;if语句似乎忽略了这个论点

Function C++;if语句似乎忽略了这个论点,function,if-statement,arguments,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; } } 在测试了我为一个程序制作的这个函数之后,

这是密码

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_rements!=0)部分停止。现在,函数应该测试函数接受的数字是否可以除以10到1之间的所有数字。(它接受数字,直到返回true)我知道它使用的第一个数字是2520,但即使在这个数字上,它也会在if(n_余数!=0)处停止。所以我希望得到一些建议!我在排除故障时遇到了麻烦!任何链接或文字,我应该寻找将是可怕的!我对编程还是很陌生,所以你能给我的任何学习帮助都会让我震撼!谢谢

将上一条if语句更改为:

if (iii == 1)
  return true;

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

除了SC Ghost的答案外,实际上还可以进一步清理函数:)

几句话,

  • 模数1将始终为零,因此您只需在
    i>1
  • 如果(i==1),您可以完全删除
    if(i==1)
    检查,如果for循环没有
    返回false,则在for循环之后总是
    返回true
    。它基本上消除了不必要的检查
  • 我认为将迭代器
    iii
    命名为
    I
    更为标准,我更喜欢我在上面写它们的方式(当然这完全是个人偏好,请随意)

  • 好电话。一种常见的样式是将常量放在左边,这样就可以得到编译时错误,从而避免这种类型的错误。这看起来像:if(1==iii)…一些人已经知道在
    if
    语句中把文本放在左边,因此如果忘记了第二个
    =
    ,编译器将抛出一个错误,而不是继续它的快乐方式。然而,我曾经看到一个编译器接受了这一点,并将整个程序中的每个文本
    1
    转换为
    iii
    的内容:-(好的,所以我给它添加了额外的=,但我仍然有问题,这个程序总是输入第一个if语句,即使n_rem余数=0。所以我需要弄清楚为什么它无论如何都要输入它!还要感谢关于缺少=。我完全没有看到这一点!谢谢!我只是用fixed==运行了你的代码,它没有输入firs。)t如果n_divident=2520上的语句。你确定2520被正确地传递了吗?好吧,那么他是对的,有时发生的事情是,如果我不重新启动IDE,它就不象寄存器一样,我重新编写了一些代码。所以,一旦我重新启动IDE,他的修复效果非常好!太棒了!谢谢大家!谢谢。现在,我从不同的人那里得到了很多关于它的建议命名迭代器。到目前为止,人们建议使用i、iii或ndx。我想知道哪一个是标准的?单个字母,比如
    i
    ,或者如果它是嵌套for循环
    i
    ,那么
    j
    是标准的。
    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;
    }