Rumah >pembangunan bahagian belakang >C++ >Mengapa Operator Modulo (%) Menghasilkan Keputusan Berbeza dengan Nombor Negatif?

Mengapa Operator Modulo (%) Menghasilkan Keputusan Berbeza dengan Nombor Negatif?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-30 18:15:11799semak imbas

Why Does the Modulo Operator (%) Produce Different Results with Negative Numbers?

Nilai Baki Negatif dalam Operasi Modulo

Apabila melakukan operasi modulo, di mana satu operan negatif, hasil yang tidak dijangka mungkin timbul. Artikel ini meneroka sebab operasi seperti (-7 % 3) dan (7 % -3) menghasilkan keputusan yang kelihatan tidak konsisten masing-masing -1 dan 1.

Menurut piawaian ISO14882:2011, pengendali modulo (% ) menyediakan baki selepas membahagikan operan pertama dengan yang kedua. Walaupun membahagi integer secara amnya melibatkan membuang bahagian pecahan, pengendali modulo juga mempertimbangkan tanda-tanda operan.

Dalam kes (-7 % 3), keputusan -7 / 3 ialah -2. Mendarab -2 dengan 3 memberi -6, menunjukkan bahawa bakinya ialah -1. Oleh itu, (-7 % 3) = -1.

Begitu juga, untuk (7 % -3), 7 / -3 menghasilkan -2. Mendarab -2 dengan -3 menghasilkan 6, menjadikan bakinya 1. Oleh itu, (7 % -3) = 1.

Adalah penting untuk ambil perhatian bahawa operasi modulo mempamerkan tingkah laku yang ditentukan pelaksanaan apabila hasilnya negatif . Walaupun sesetengah pelaksanaan mungkin mengekalkan tanda negatif, standard ISO14882:2011 tidak lagi menguatkuasakan perkara ini. Oleh itu, tanda masuk negatif (-7 % 3) adalah bergantung kepada sistem.

Atas ialah kandungan terperinci Mengapa Operator Modulo (%) Menghasilkan Keputusan Berbeza dengan Nombor Negatif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn