Nilai x dan y mana yang akan menyebabkan crash dengan beberapa kompiler C?
int f(int x, int y) {
return (y==0) ? 0 : (x/y);
}
c
programming-puzzle
division
ugoren
sumber
sumber
Jawaban:
-2147483648 (INT_MIN) dan -1
$ gcc -Wall division.c && ./a.out # => zsh: pengecualian floating point ./a.out
sumber
Jawaban yang tepat sudah diberikan, tetapi saya langsung memikirkan Microsoft Pex .
Setelah menambahkan puzzle Anda di situs sandbox, ia menemukan jawabannya dalam beberapa detik, sama seperti jawaban eregons. (klik tanyakan pex)
Catatan: melakukannya dalam C #, tetapi bahasanya tidak benar-benar relevan.
sumber
(x/y)
dan tahu bahwaINT_MIN
,-1
,0
dll semua kasus masalah bagi ekspresi itu, dan mencoba untuk melakukan reverse engineering cara untuk menghasilkan nilai-nilai tersebut pada saat evaluasi.