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; [...]
Oleh itu, ungkapan:
X / 0; // Undefined behavior X % 0; // Undefined behavior
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.
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!