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
Lepaskan: 2024-12-23 19:25:11
asal
396 orang telah melayarinya

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
Salin selepas log masuk

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