Penilaian Modulus: Memahami Keputusan Negatif
Dalam C , pengendali modulo (%) diketahui menghasilkan nilai negatif dalam keadaan tertentu. Ini boleh membingungkan, terutamanya apabila operasi ini mengembalikan hasil yang berbeza:
std::cout << (-7 % 3) << std::endl; // -1 std::cout << (7 % -3) << std::endl; // 1
Untuk menjelaskan tingkah laku ini, kami merujuk kepada piawaian ISO C (ISO14882:2011). Pengendali modulo mengembalikan baki daripada pembahagian operan pertama (penumerator) dengan operan kedua (penyebut).
Untuk operasi pertama, (-7) dibahagikan dengan 3, menghasilkan hasil bagi - 2 dengan baki -1. Oleh itu, (-7 % 3) bersamaan dengan -1.
Untuk operasi kedua, 7 dibahagikan dengan -3, juga menghasilkan hasil bagi -2. Walau bagaimanapun, oleh kerana penyebut adalah negatif, tanda selebihnya ditentukan oleh pelaksanaan. Dalam kes ini, pelaksanaan memilih untuk mengembalikan baki positif, iaitu 1.
Adalah penting untuk ambil perhatian bahawa gelagat pengendali modulo mungkin berbeza bergantung pada platform dan pelaksanaan tertentu. Secara umum, adalah disyorkan untuk mengendalikan nilai negatif dengan berhati-hati dan mempertimbangkan potensi hasil yang berbeza apabila bekerja dengan pengendali modulo.
Atas ialah kandungan terperinci Mengapa Operator Modul C (%) Kadang-kadang Mengembalikan Keputusan Negatif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!