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();
}
实际上,它总是显示正确的结果,但由于控制台的大小,您无法看到它们。
尝试:
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
重定向,然后在记事本中打开它。