在C#for Programmers 2010中有一段我想知道的代码,这里是:
for (int i = 0; i < deck.Length; i++)
{
deck[i] = new Card(faces[i % 13], suits[i / 13] );
}
据我所知,count是数组内存中的插槽,而新卡正在将套装和面孔放入卡组中并返回计数金额。我不明白的是你怎么能模数并分成零?还是我误会了?感谢
答案 0 :(得分:4)
这个问题听起来像模数运算符让你感到困惑。模数(%
)运算符计算除法的余数。它的结构与除法(分子/分母)相同。您似乎将i % 13
视为remainder of 13/i
。那是错的。它是remainder of i/13
。因此,如果i
为零,则模数运算符将返回0.您 从不 将我的零除以 < / strong>申请。
一个例子是3/2
。 3/2
是一半。但是如果将结果保存为整数(无小数),则仅保存1
。这一半去了哪里?它被扔掉了。如果需要,可以将其保存为float
或double
,或使用模数运算符。 3%2
会给你1
,其余的。这是一个示例程序:
struct ModulusHelper
{
public int Quotient;
public int Remainder;
public ModulusHelper(int numerator, int denominator)
{
Quotient = numerator / denominator;
Remainder = numerator % denominator;
}
}
你可以像这样使用它:
class Program
{
static void Main(string[] args)
{
ModulusHelper mod = new ModulusHelper(args[0], args[1]);
Console.WriteLine("Quotient: {0}", mod.Quotient);
Console.WriteLine("Remainder: {0}", mod.Remainder);
Console.ReadKey(); // BATCH `pause`
}
}
答案 1 :(得分:1)
0%13 = 0
0/13 = 0
这是简单的数学。
答案 2 :(得分:0)
你没有划分为0,你将0除以13. 0/13 = 0