为什么Octave或Matlab不使用%(百分号)作为模运算符

Job*_*Job 0 matlab octave

对语言不熟悉的人可能会合理地期望7%4返回3,即结果mod(7,4),就像许多其他语言一样.相反,它返回7- "为什么会这样?" 他/她可能会问......

Dan*_*Dan 9

你为什么要合理地期望7%4回来3%不是模运算的数学符号.如果您阅读维基百科的文章,您会看到尽可能多的语言使用mod,%因此Matlab在这里并不奇怪.它只是一种与你来自哪里不同的语言.

%来自C和Matlab最初旨在与Fortran"竞争",而不是C. Fortran使用MOD而不是%.我认为你所期望的%模数的唯一原因是因为C的影响以及模数为什么在许多语言中获得特殊运算符的问题更具相关性.例如,为什么模拟地板?还是超过绝对?

Matlab %用于评论,但不能说它不是用于模数的原因.我认为说它不%用于模数的原因更公平,因为它确实没有任何理由.

  • 有趣的一点。我想几乎人们实际使用的所有语言(以及几乎所有我使用过的非 lispy 语言 - 除了明显的 Matlab/Octave):C、Java、Javascript、PHP、Python、Ruby、C#……都使用`%` 表示模所以这就是为什么我认为许多人可能_合理地_假设使用 `%` 作为模是相当普遍的,我想这证明了 C 的影响。尽管如此,您提出的这一点很有趣,并在您的程序员.stackexchange 链接中得到了解决。请参阅我对 OQ 的评论,了解为什么我实际上发布了这个,回想起来 - 提出的问题。 (2认同)

Job*_*Job 6

%用于Matlab中的注释.Octave/Matlab中用于查找除法后余数(即模运算)的正确语法是使用该mod函数.

例如

>> mod(8,3)

ans = 

     2
Run Code Online (Sandbox Code Playgroud)

  • @DennisJaheruddin我不同意,这是一个非常有效的答案,如果不存在,我会给自己一个.为什么`%`用于注释以及`%`是否用于模数如果它不用于注释是完全无关紧要的,重点是`%`在MATLAB中有专用,这就是注释.提出答案. (3认同)
  • 这真的只是[乞求问题](https://en.wikipedia.org/wiki/Begging_the_question).为什么Matlab使用'%`作为评论? (2认同)
  • 确实`%`用于注释,但是这里绝对没有证据表明如果不是这样的话,`%`符号就会用于模数.因此,这个答案介于不充分和无效之间. (2认同)
  • @ am304您无法在逻辑上得出结论*reason*(即*why*的答案)`%`未用于模数是因为它用于注释.是什么让你如此确定设计团队没有先分配运算符(包括模数),然后从剩下的内容中选择一个注释字符.将'%`用作注释的可能性很大,因为它***用于模数.所以我想说这个答案是无效的. (2认同)