Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Pengendali Modulo Mengendalikan Nombor Negatif?

Bagaimanakah Pengendali Modulo Mengendalikan Nombor Negatif?

Linda Hamilton
Linda Hamiltonasal
2024-12-23 03:10:13572semak imbas

How Does the Modulo Operator Handle Negative Numbers?

Memahami Gelagat Operator Modulo dengan Nilai Negatif

Pengendali modulo diketahui menghasilkan hasil yang berbeza apabila digunakan dengan operan negatif. Untuk menyelidiki perkara ini, mari kita pertimbangkan operasi berikut:

std::cout << (-7 % 3) << std::endl; // Output: -1
std::cout << (7 % -3) << std::endl; // Output: 1

Rasional Mengikut Piawaian ISO

Menurut ISO14882:2011(e) 5.6-4, pengendali modulo (%) menghasilkan baki daripada pembahagian ungkapan pertama dengan yang kedua. Walau bagaimanapun, untuk operan kamiran seperti dalam kes kami, operator bahagian (/) melakukan pembahagian integer, membuang mana-mana bahagian pecahan.

Pecahan Matematik

Mari kita pecahkan pengiraan untuk kejelasan:

  • (-7 / 3) hasil dalam -2, dan (-2 * 3) ialah -6. Oleh itu, -7 % 3 menghasilkan -1, kerana (-6 - (-7)) = -1.
  • (7 / -3) menghasilkan -2, dan (-2 * -3) ialah 6. Oleh itu, 7 % -3 menghasilkan 1, sebagai (6 - 7) = 1.

Implementation-Defined Tingkah Laku

Adalah penting untuk ambil perhatian bahawa apabila kedua-dua operan negatif, tanda selebihnya ditentukan pelaksanaan. Walau bagaimanapun, setakat ISO14882:2011(e), tingkah laku itu tidak lagi dinyatakan secara eksplisit seperti dalam pendahulunya, ISO14882:2003(e).

Atas ialah kandungan terperinci Bagaimanakah Pengendali Modulo Mengendalikan 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