与C#模数运算符不相关的结果

时间:2014-04-13 08:11:29

标签: c# .net

我正在尝试一个简单的练习,在屏幕上显示1-1000之间的3或5倍数的所有数字。众所周知,找到这个的方法是使用模数运算符(%),如果模数除法返回0,则数字是3或5的倍数,无论你进行比较,都非常简单。

关键在于,由于某些原因,当我比较表达式if (i % 3 == 0 || i % 5 == 0)时,匹配的第一个数字是363.

当我只与3 if (i % 3 == 0)进行比较时,第一个匹配的数字是105,最后当我只与5比较if if(i%5 == 0)时结果是预期的,从5开始。 / p>

我想知道这里发生了什么,或者只是因为我睡着了而无法在夜晚的这个时间看到的东西。

static void Main(string[] args)
    {
        long total = 0;


        for (int i = 3; i <= 1000; i++)
        {
            if (i % 3 == 0 || i % 5 == 0)
            {
                total += i;
                Console.WriteLine(i.ToString());

            }

        }

        Console.Read();

    } 

2 个答案:

答案 0 :(得分:4)

实际上,它始终显示正确的结果,但由于您的控制台大小,您无法看到它们。

尝试:

for (int i = 3; i <= 1000; i++)
{
    if (i % 3 == 0 || i % 5 == 0)
    {
        Console.WriteLine(i);
    }
    if (i % 100 == 0) Console.Read();
}

按Enter键查看下一个100号码。

答案 1 :(得分:2)

尝试将输出重定向到文件并查看它。使用Program.exe > Output.txt重定向,然后在记事本中将其打开。