【问题标题】:Modulo operator in Pascal?Pascal中的模运算符?
【发布时间】:2013-05-12 14:18:49
【问题描述】:

如何获得除以 2 ints 的余数?

在使用 Java 时,我使用 % 运算符,但在 Pascal 中我可以做什么?

【问题讨论】:

    标签: pascal


    【解决方案1】:

    使用此处描述的 mod 运算符。 http://www.tutorialspoint.com/pascal/pascal_operators.htm

    A mod B
    

    【讨论】:

    • 请在此处描述。如果大部分内容位于异地位置并且该站点由于某种原因(它已移动、脱机等)不可用,那么您的答案将失去所有意义。答案应该包含足够的内容来回答这里的问题;指向外部网站的链接应仅用作附加参考。谢谢。
    • 请注意,tutorialspoint.com 上的教程说%(百分号)是模运算符。我猜这可能是一个错误的输入。另请参阅Pascal - Arithmetic Operators (tutorialspoint.com)
    【解决方案2】:

    您可以像在 Java 中使用 n % 2 一样使用 n mod 2(当 n>=0 无论如何...不确定 Pascal 对负数做了什么,但 Java 做错了。)

    但是,这样做的最常见原因是测试数字是偶数还是奇数,而 Pascal 具有内置函数 odd(n) 可以做到这一点。在许多编译器上,ord(odd(n)) 是获取 n mod 2 余数的更快方法。

    【讨论】:

      【解决方案3】:

      很遗憾,Pascal mod 不能以这种方式使用。原因是我在说服 Pascal 标准委员会方面做得不够。

      我游说并请求标准委员会以正确的方式做 mod,直到他们最终让步。因此,例如 -5 mod 2 等于 1。令我恐惧的是,他们以错误的方式进行整数除法。我从没想过他们不会让这两个匹配。直到今天,帕斯卡 (-5 mod 2) + (-5 / 2) 等于 -4。我责备自己。

      【讨论】:

      • 为尝试点赞。不过,最后一点……您是说 (-5 mod 2) + (-5 div 2)*2 吗?我不希望 (a mod b) + (a / b) 有什么特别的,但您希望 (a mod b) + (a div b)*b 回到 a。 (我从中得到 -3 而不是 -4。)
      【解决方案4】:

      Pascal 的modulo 运算符是mod。它就像 Java 和 C/C++ 中的 % 运算符一样工作:

      var
        X, Y: Integer;
      begin
        X := 10;
        Y := X mod 4;  // result: Y = 2
        Y := X mod 3;  // result: Y = 1
      end;
      

      【讨论】:

      • 还要注意divmod 是除法/取模的整数版本,而/ 返回的是真实结果。
      • 发帖者指定“除以 2 ints 的剩余部分,但可能应该为以后的读者指出。谢谢。:-) (模运算始终是整​​数,因此会产生整数值。)
      【解决方案5】:

      在 delphi 中有 MOD 运算符,也就是 x = Y MOD Z。应该在 pascal 中工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 2012-09-11
        • 2012-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多