%(mod)Explain今天我用C#写了一个程序,我用%来计算一些指标。。。我的程序没有运行所以我调试了它,我意识到“%”不像我知道的其他编程语言那样工作。例如:在Python中,%返回以下值:forxinxrange(-5,6):printx,"%5=",x%5-5%5=0-4%5=1-3%5=2-2%5=3-1%5=40%5=01%5=12%5=23%5=34%5=45%5=0在C#中:for(inti=-5;i<6;i++){Console.WriteLine(i+"%5="+i%5);}-5%5=0-4%5=-4-3%5=-3-2%5=-2-1%5=-10%5=01%5=12%5=23%5=34%5=45%5=0我做错了什么或者它不应该像它那样工作?正如评论中所解释的,不同的行为是设计使然。不同的语言只是赋予%运算符不同的含义。您问:如何在C#中使用取模运算符?您可以自己定义一个模运算符,其行为与Python%运算符相同:intmod(inta,intn){intresult=a%n;如果((结果<0&&n>0)||(结果>0&&n<0)){结果+=n;}返回结果;}两个答案都是正确的。虽然我个人认为“永远积极”更有意义。您可以定义自己的模函数来仅给出肯定的答案,如下所示:intmod(inta,intn){return((a%n)+n)%n;}定义一个数字类。换句话说,在模运算中,数字n等价于(读作:相同)n+m、n–m、n+2m、n–2m等。一个定义了m个“篮子”,每个数字落入一个(而且只有一个)。例如:您可以说“4:30pm”,也可以说“It's16:30”。两种形式的意思完全相同,但它们的行为不同。因此,Python和C#结果都是正确的!您选择的模5算术中的相同数字。例如,返回(5,6,7,8,9)在数学上也是正确的。这有点奇怪。至于表示的选择(换句话说,选择如何表示负数),这只是两种语言之间不同设计选择的一个例子。但是,这根本不是%运算符在C#中实际执行的操作。%运算符不是规范的模数运算符;它是余数运算符。A%B运算符实际上回答了“如果我使用整数运算将A除以B,剩下的是什么?”这个问题。-有什么不同?EricLippert的余数和模数获取规范模数的快速片段:return((n%m)+m)%m;测试实现:Mono/C#:machine:~user$catmod.csusingSystem;公共类程序{publicstaticvoidMain(string[]args){Console.WriteLine(Mod(-2,5));Console.WriteLine(Mod(-5,5));Console.WriteLine(Mod(-2,-5));}publicstaticintMod(intn,intm){return((n%m)+m)%m;}}机器:~user$monomod.exe30-2Python:机器:~user$catmod.pyprint-2%5;打印-5%5;打印-2%-5;machine:~user$pythonmod.py30-2查右表:http://en.wikipedia.org/wiki/Modulo_operation以上为C#学习教程:%(mod)讲解分享的全部内容.如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处:
