【发布时间】:2013-05-12 14:18:49
【问题描述】:
如何获得除以 2 ints 的余数?
在使用 Java 时,我使用 % 运算符,但在 Pascal 中我可以做什么?
【问题讨论】:
标签: pascal
如何获得除以 2 ints 的余数?
在使用 Java 时,我使用 % 运算符,但在 Pascal 中我可以做什么?
【问题讨论】:
标签: pascal
使用此处描述的 mod 运算符。 http://www.tutorialspoint.com/pascal/pascal_operators.htm
A mod B
【讨论】:
%(百分号)是模运算符。我猜这可能是一个错误的输入。另请参阅Pascal - Arithmetic Operators (tutorialspoint.com)。
您可以像在 Java 中使用 n % 2 一样使用 n mod 2(当 n>=0 无论如何...不确定 Pascal 对负数做了什么,但 Java 做错了。)
但是,这样做的最常见原因是测试数字是偶数还是奇数,而 Pascal 具有内置函数 odd(n) 可以做到这一点。在许多编译器上,ord(odd(n)) 是获取 n mod 2 余数的更快方法。
【讨论】:
很遗憾,Pascal mod 不能以这种方式使用。原因是我在说服 Pascal 标准委员会方面做得不够。
我游说并请求标准委员会以正确的方式做 mod,直到他们最终让步。因此,例如 -5 mod 2 等于 1。令我恐惧的是,他们以错误的方式进行整数除法。我从没想过他们不会让这两个匹配。直到今天,帕斯卡 (-5 mod 2) + (-5 / 2) 等于 -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;
【讨论】:
div 和mod 是除法/取模的整数版本,而/ 返回的是真实结果。
ints 的剩余部分,但可能应该为以后的读者指出。谢谢。:-) (模运算始终是整数,因此会产生整数值。)
在 delphi 中有 MOD 运算符,也就是 x = Y MOD Z。应该在 pascal 中工作
【讨论】: