Berbeza dengan Python, C mengeluarkan nilai negatif apabila menggunakan modulo dengan pembahagi positif. Ini berlaku kerana operasi ditakrifkan pelaksanaan dalam C mengikut ISO/IEC 14882:2003(E):
"Jika kedua-dua operan adalah bukan negatif maka bakinya adalah bukan negatif; jika tidak, tanda baki ialah pelaksanaan-ditakrifkan."
Takrifan ini membenarkan pengoptimuman yang biasa dalam set arahan pemproses, di mana pembahagian dan modulo dilakukan bersama-sama.
Baki negatif memastikan ketekalan dengan peraturan berikut:
Ini bermakna apabila membahagikan nombor negatif dengan nombor positif, hasil bahagi akan menjadi negatif (atau sifar).
Rasional untuk spesifikasi ini termasuk:
Walaupun baki negatif mungkin kelihatan berlawanan dengan intuitif, ia adalah akibat daripada sifat modulo yang ditentukan pelaksanaan dalam C . Ia memastikan konsistensi dengan pembahagian integer dan mengoptimumkan prestasi.
Atas ialah kandungan terperinci Mengapa C Modulo Mengembalikan Nombor Negatif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!