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

Mengapa Operator Modulo Menghasilkan Keputusan Negatif dengan Nombor Negatif?

Barbara Streisand
Lepaskan: 2024-12-17 09:55:25
asal
210 orang telah melayarinya

Why Does the Modulo Operator Produce Negative Results with Negative Numbers?

Pengendali Modulo Keputusan dalam Nilai Negatif: Penjelasan Matematik

Pengendali modulo %, apabila digunakan pada nombor negatif, boleh menghasilkan keputusan yang berbeza bergantung pada pelaksanaan. Ini boleh membingungkan, tetapi memahami definisi matematik pengendali modulo boleh menjelaskan tingkah laku ini.

Menurut ISO14882:2011(e) 5.6-4, pengendali modulo mengembalikan baki pembahagian ungkapan pertama dengan yang kedua. Jika operan kedua adalah sifar, tingkah laku tidak ditentukan. Untuk operan kamiran, hasil bagi ialah hasil bagi algebra dengan mana-mana bahagian pecahan dibuang.

Untuk menggambarkan ini, pertimbangkan contoh berikut:

std::cout << (-7 % 3) << std::endl; // -1
std::cout << (7 % -3) << std::endl; // 1
Salin selepas log masuk

(-7 % 3) = -1

  • -7 dibahagikan dengan 3 menghasilkan hasil bagi algebra bagi -2.
  • -2 didarab dengan 3 memberikan -6.
  • Baki -7 dibahagikan dengan 3 oleh itu ialah -1.

(7 % -3) = 1

  • 7 dibahagikan dengan -3 menghasilkan hasil bagi algebra -2.
  • -2 didarab dengan -3 memberikan 6.
  • Baki 7 dibahagikan dengan -3 oleh itu ialah 1.

Ambil perhatian bahawa dalam kedua-dua kes, hasil bagi algebra adalah sama (-2). Perbezaan dalam baki terhasil daripada tanda yang ditentukan pelaksanaan bagi baki apabila kedua-dua operan mempunyai tanda yang berbeza.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan