【问题标题】:Why don't Octave or Matlab use % (percent symbol) as a modulo operator [closed]为什么 Octave 或 Matlab 不使用 % (百分号)作为模运算符 [关闭]
【发布时间】:2014-10-23 09:05:00
【问题描述】:

该语言的新手可能会合理地期望7%4 返回3,即mod(7,4) 的结果,就像在许多其他语言中一样。相反,它返回7 - “为什么会这样?”他/她可能会问...

【问题讨论】:

  • why 不是一个实际可回答的问题。
  • 很难比 MATLAB 给你的解释更好地解释这一点。在 MATLAB 中输入why %,您就会明白为什么会这样了。
  • 我实际上写了这个问题,因为有人在一段时间没有使用它后回到 octave/matlab,我认为% 将是模运算符,它给我带来了一个错误,所以我试图写一个与我随后进行的搜索类型相匹配的问题和答案,例如:“八度模运算符”,“为什么 % 不是模运算符”,这样其他人就可以比我记住 @ 更快地找到他们的答案987654328@ 是注释分隔符。人们是否希望我编辑它说“八度音阶中的模运算符是什么”?尽管如此,我认为丹的回答很有趣......
  • 正如您可能已经推断出的那样,我并没有非常认真地对待这个问题:)哦,顺便说一句@RobertP。 why % 返回什么?我目前无法访问矩阵实验室...

标签: matlab octave


【解决方案1】:

为什么你应该合理地期望7%4返回3% 不是 modulo operation 的数学符号。如果您阅读 Wikipedia 文章,您会发现使用 mod 的语言与使用 % 的语言一样多,因此 Matlab 在这里并不奇怪。它只是一种与您来自的地方不同的语言。

我会猜测% 来自C,而Matlab 最初的目标是与Fortran 而不是C“竞争”。Fortran 使用MOD 而不是@ 987654330@。我认为您期望 % 表示模数的唯一原因是因为 C 的影响并且 the question of why modulo gets a special operator character in many languages 更相关。例如,为什么要在地板上取模?还是绝对的?

Matlab 将% 用于 cmets 但这不能说是它不将其用于模数的原因。我认为更公平地说它不使用% 进行取模的原因是因为它确实没有任何理由。

【讨论】:

  • 有趣的地方。我猜人们实际使用的几乎所有语言(以及我使用过的几乎所有非 lispy 语言——显然是 Matlab/Octave 除外):C、Java、Javascript、PHP、Python、Ruby、C# ...... % 用于模数,这就是为什么我认为许多人可能合理地假设使用 % 作为模数相当普遍,我想这证明了 C 的影响力。尽管如此,这是您提出的一个有趣的观点,并且在您的programmers.stackexchange 链接中得到了解决。请参阅我对 OQ 的评论,了解我为什么实际发布此内容,回想起来 - 提出问题。
【解决方案2】:

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

例如

>> mod(8,3)

ans = 

     2

【讨论】:

  • 这真的只是begging the question。为什么 Matlab 对 cme​​ts 使用%
  • % 确实用于 cmets,但这里绝对没有证据表明如果不是这种情况,% 符号将用于取模。因此,这个答案介于不足和无效之间。
  • @DennisJaheruddin 我不同意,这是一个完全有效的答案,如果它还没有的话,我会给自己一个答案。为什么 % 用于 cmets 以及 % 如果不用于 cmets 是否会用于取模完全无关紧要,关键是 % 在 MATLAB 中有专门的用途,那就是 cmets。支持答案。
  • @am304 您无法从逻辑上得出结论,原因(即为什么的答案)% 不用于取模是因为它是用于 cmets。是什么让您如此确定设计团队没有首先分配运算符(包括模数),然后从剩下的内容中选择一个注释字符。 % 很有可能被用作 cmets,因为它 NOT 用于模数。所以我会说这个答案是无效的。
  • @Dan 这是你的特权,但我不同意。我坚持说答案是有效的。
猜你喜欢
  • 1970-01-01
  • 2011-07-22
  • 2013-01-21
  • 1970-01-01
  • 2017-01-19
  • 2013-02-10
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
相关资源
最近更新 更多