C | Python> Negativwert-Modulo (%) -Operation> C: Rückgabe minus | Python: Rückgabe plus

Verarbeitung in Python in regelmäßigen Abständen ausführen Ich dachte, dass die folgende Modulo (%) -Operation einen negativen Wert bei der Implementierung von zurückgeben würde.

next_time = ((base_time - time.time()) % interval) or interval

C

https://ideone.com/cgMjRc

#include <stdio.h>

int main(void) {
	int val = -3;
	printf("%d\n", val % 5);
	return 0;
}

run


-3

Python 3.5

https://ideone.com/CMgBPa

val=-3
print(val % 5)

run


2

Bemerkungen

Diejenigen, die Python häufig verwenden, wissen es vielleicht.

https://docs.python.org/3/reference/expressions.html Die roten Buchstaben unten sind zur Hervorhebung farbig.

The % (modulo) operator yields the remainder from the division of the first argument by the second. The numeric arguments are first converted to a common type. A zero right argument raises the ZeroDivisionError exception. The arguments may be floating point numbers, e.g., 3.14%0.7 equals 0.34 (since 3.14 equals 4*0.7 + 0.34.) The modulo operator always yields a result with the same sign as its second operand (or zero); the absolute value of the result is strictly smaller than the absolute value of the second operand

Recommended Posts

C | Python> Negativwert-Modulo (%) -Operation> C: Rückgabe minus | Python: Rückgabe plus
Die boolesche Python-Operation gibt keinen booleschen Wert zurück