Rumah > pembangunan bahagian belakang > C++ > Apa yang Berlaku Apabila Anda Menggunakan Operator Modulo dengan Sifar?

Apa yang Berlaku Apabila Anda Menggunakan Operator Modulo dengan Sifar?

Susan Sarandon
Lepaskan: 2024-11-08 10:12:01
asal
716 orang telah melayarinya

What Happens When You Use the Modulo Operator with Zero?

Mengatasi Gelagat Tidak Ditakrifkan Modulo dengan Sifar

Dalam pengaturcaraan, pengendali modulo (%) digunakan untuk menentukan baki apabila membahagikan satu nombor oleh yang lain. Walau bagaimanapun, apabila digunakan dengan pembahagi 0, ungkapan X % 0 menjadi tidak sah dan menimbulkan gelagat yang tidak ditentukan.

Tingkah laku ini berpunca daripada takrif matematik modulo, di mana pembahagian dengan sifar tidak ditentukan. Secara logiknya, sesetengah orang mungkin menjangkakan X % 0 sama dengan X, kerana baki pembahagian X dengan sifar hendaklah X. Walau bagaimanapun, Piawaian C secara eksplisit menyatakan bahawa modulo dengan sifar menghasilkan tingkah laku yang tidak ditentukan (§5.6/4):

[...] If the second operand of / or % is zero the behavior is undefined; [...]
Salin selepas log masuk

Oleh itu, ungkapan:

X / 0; // Undefined behavior
X % 0; // Undefined behavior
Salin selepas log masuk

dianggap tidak sah dalam C . Adalah penting untuk mengelakkan ungkapan sedemikian dalam kod anda untuk mengelakkan tingkah laku yang tidak dapat diramalkan dan salah.

Selain itu, adalah penting untuk ambil perhatian bahawa tanda baki apabila satu operan negatif adalah ditakrifkan pelaksanaan (§5.6/4):

[...] If both operands are nonnegative then the remainder is nonnegative; if not, the sign of the remainder is implementation-defined.
Salin selepas log masuk

Oleh itu, ungkapan seperti -5 % 2 mungkin tidak selalu mengembalikan hasil yang dijangkakan dan tingkah laku mungkin berbeza-beza bergantung pada pelaksanaan.

Atas ialah kandungan terperinci Apa yang Berlaku Apabila Anda Menggunakan Operator Modulo dengan Sifar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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