C#模运算符的不期望结果

本文关键字:期望 结果 运算符 | 更新日期: 2023-09-27 17:58:09

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

重点是,由于某种原因,当我比较表达式if (i % 3 == 0 || i % 5 == 0)时,第一个匹配的数字是363。

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

我想知道这里发生了什么,或者只是一些简单的事情,因为我睡着了,所以我在晚上的这个时候看不见。

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();
    } 

C#模运算符的不期望结果

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

尝试:

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编号。

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