Rumah >pembangunan bahagian belakang >C++ >Mengapa Operator Modul C (%) Kadang-kadang Mengembalikan Keputusan Negatif?

Mengapa Operator Modul C (%) Kadang-kadang Mengembalikan Keputusan Negatif?

Barbara Streisand
Barbara Streisandasal
2024-12-23 19:25:11394semak imbas

Why Does the C   Modulo Operator (%) Sometimes Return Negative Results?

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!

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