我正在做一本书的挑战,它要求我创建一个从 20 倒数到 0 的循环,并让我为每个数字打印一条消息。但是,它要求我为每个可被 5 整除的数字打印一条特殊消息。我见过一些例子,包括这个:
if (number%5==0)
{
//your code here
}
我知道模数在做什么,但为什么这段代码后面有 ==0
?例如,为什么不这样编码:
if (number%5)
{
//your code here
}
最佳答案
因为number%5
是0到4之间的整数,而number%5==0
是 bool 值。与 C/C++ 等语言不同,整数可以被视为 bool 值(例如 0 -> false,1 -> true),在 C# 中,if 的条件必须是“真实” bool 值。
(即使 C# 允许您在 if 条件中使用整数,您对代码的建议更改也不正确。如果 number%5 为 0,前一段代码将运行您的代码,后一段代码将运行您的代码如果 number%5 不为 0 的代码。)
编辑:正如 Eric Lippert 在评论中所说,在 if
条件中使用 bool
的替代方法是使用实现 implicit operator bool
作为转换或实现运算符 true
和 false
,例如 http://msdn.microsoft.com/en-us/library/6x6y6z4d.aspx .但据我所知,除了 bool
之外,没有任何原语满足这两个条件。
关于c# - 为什么模运算的结果不能直接用在 if 语句中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16929329/