Как я могу получить остаток от деления 2 int
s?
При использовании Java я использую оператор %
, но что я могу сделать в Pascal?
Как я могу получить остаток от деления 2 int
s?
При использовании Java я использую оператор %
, но что я могу сделать в Pascal?
Используйте оператор мода, как описано здесь. http://www.tutorialspoint.com/pascal/pascal_operators.htm
A mod B
Вы можете использовать n mod 2
так же, как n % 2
в Java (в любом случае, когда n>=0
... не уверен, что Паскаль делает с отрицательными числами, но Java делает не то.)
Однако наиболее распространенной причиной для этого является проверка того, является ли число четным или нечетным, и в Паскале для этого есть встроенная функция odd(n)
. Во многих компиляторах ord(odd(n))
— это более быстрый способ получить остаток n по модулю 2.
К сожалению, мод Pascal нельзя использовать таким образом. Причина в том, что я проделал незавершенную работу по уговорам комитета по стандартам Pascal.
Я лоббировал и умолял комитет по стандартам сделать мод правильно, пока в конце концов они не уступили. Так, например, -5 по модулю 2 равно 1. К моему ужасу, целочисленное деление было выполнено неправильно. Я никогда не думал, что они не совпадут. По сей день в Паскале (-5 по модулю 2) + (-5/2) равно -4. Я виню себя.
Оператор 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
являются целочисленными версиями деления по модулю, а /
возвращает реальный результат.
- person David R Tribble; 20.05.2013
ints
, но, вероятно, на это следует указать будущим читателям. Спасибо. :-) (Операции по модулю всегда целочисленные и, следовательно, приводят к целочисленным значениям.)
- person Ken White; 20.05.2013
В delphi есть оператор MOD, он же x = Y MOD Z. должен работать в паскале