Im Gegensatz zu Python gibt C bei Verwendung von Modulo mit einem positiven Teiler negative Werte aus. Dies liegt daran, dass die Operation in C gemäß ISO/IEC 14882:2003(E) durch die Implementierung definiert ist:
„Wenn beide Operanden nicht negativ sind, ist der Rest nicht negativ; wenn nicht, ist das Vorzeichen des Rests.“ Implementierungsdefiniert.“
Diese Definition ermöglicht Optimierungen, die in Prozessorbefehlssätzen üblich sind, bei denen Division und Modulo durchgeführt werden zusammen.
Der negative Rest gewährleistet die Konsistenz mit den folgenden Regeln:
Das bedeutet, dass bei der Division einer negativen Zahl durch eine positive Zahl die Der Quotient wird negativ (oder Null) sein.
Die Begründung für diese Spezifikation umfasst:
Während der negative Rest kontraintuitiv erscheinen mag, ist er eine Folge der durch die Implementierung definierten Natur von Modulo in C. Es stellt die Konsistenz bei der ganzzahligen Division sicher und optimiert die Leistung.
Das obige ist der detaillierte Inhalt vonWarum gibt C Modulo negative Zahlen zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!