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:
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!