Pembahagian Integer oleh Sifar Menyebabkan Pengecualian Titik Terapung
Soalan:
Adakah pembahagian integer dengan sifar sentiasa mencetuskan titik terapung pengecualian?
Jawapan:
Tidak, tidak semua platform melaporkan pembahagian integer dengan sifar sebagai pengecualian titik terapung. Walau bagaimanapun, sistem pengendalian dan masa jalan C/C tertentu mungkin mengendalikan pengecualian ini secara berbeza:
Platform POSIX:
POSIX secara khusus memerlukan pembahagian integer dengan sifar menaikkan SIGFPE (terapung titik pengecualian) isyarat. POSIX juga menyediakan maklumat tambahan yang membezakannya daripada jenis pengecualian titik terapung lain, seperti FPE_INTDIV_TRAP untuk pembahagian dengan sifar.
Platform Lain:
Semantik Pengecualian FP:
Pengecualian titik terapung biasanya bertopeng secara lalai. Ini membolehkan operasi seperti 0.0 / 0.0 menghasilkan NaN tanpa mencetuskan pengecualian. Walau bagaimanapun, ini juga bermakna bendera pengecualian perlu disemak secara manual untuk menentukan sama ada pengecualian berlaku dan jenis apa.
Pengesanan Ralat FP lwn. Integer:
Pembahagian integer tidak mempunyai pilihan untuk menghasilkan keputusan NaN atau Inf, menjadikannya lebih mudah untuk mengendalikan pengecualian. Walau bagaimanapun, pada x86, nilai titik terapung luar julat yang ditukar kepada integer dengan arahan tertentu mungkin menghasilkan nilai "integer tak tentu" (INT_MIN) jika pengecualian "titik terapung tidak sah" bertopeng.
Atas ialah kandungan terperinci Adakah Pembahagian Integer dengan Sifar Sentiasa Menghasilkan Pengecualian Titik Terapung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!