如何在每个第四个循环以及每个其他循环中执行某些操作?

时间:2015-04-25 03:12:30

标签: c loops modulus

form.submit()

我可以添加一个条件来使事情每两个循环发生一次,但是如何为每个第四个循环创建一个条件?

1 个答案:

答案 0 :(得分:9)

if (count % 4 == 0) {
    // Stuff
}

关键是每个 n 循环都是使用mod n == 0完成任何 n 。 (严格来说,你可以测试任何小于 n 的数字,但0很方便,因为它的总是小于 n ,对于任何自然数 n 。)

此外,您只需要一个计数器用于任何数量的此类操作,因为计数器会独立于所有这些操作递增。

您甚至可以使用无条件for循环,如下所示:

for (int count = 0; true; count++) {
    if (count % 2 == 0) {
        // Stuff every other loop
    }
    if (count % 4 == 0) {
        // Stuff every fourth loop
    }
}

它会不时地悄悄地溢出,但是它不会对2的幂模数产生任何真正的影响。但如果你想每隔五个循环做一些事情,你就会得到奇怪的故障每次翻身。要修复 ,找到您使用的各种间隔的最小公倍数(对于所有可能的间隔,最多12,27720就可以了)并使用如下:

while (true) {
    for (int count = 0; count < 27720; count++) {
        if (count % 5 == 0) {
            // Stuff every fifth loop
        }
        if (count % 12 == 0) {
            // Stuff every twelfth loop
        }
    }
}

这确保所有模数同时正确地命中0,就在你在0开始另一个循环的时候。(最小的普通倍数很快得到很多大量的时间间隔,您可能必须使用longlong long来存储计数器。long long和最多5342931457063200应允许您触发不同的代码在同一个循环中每个间隔从2到40的路径。如果你需要更多的间隔,你需要运行单独的计数器。)