Które wartości xiy spowodują awarię niektórych kompilatorów C?
int f(int x, int y) {
return (y==0) ? 0 : (x/y);
}
c
programming-puzzle
division
ugoren
źródło
źródło
Odpowiedzi:
-2147483648 (INT_MIN) i -1
$ gcc -Wall division.c && ./a.out # => zsh: wyjątek zmiennoprzecinkowy ./a.out
źródło
Prawidłowa odpowiedź jest już podana, ale od razu pomyślałem o Microsoft Pex .
Po dodaniu łamigłówki na stronie piaskownicy znajduje odpowiedź w ciągu kilku sekund, tak samo jak odpowiedź Eregons. (kliknij zapytaj pex)
Uwaga: robi to w C #, ale język nie jest tak naprawdę istotny.
źródło
(x/y)
i wiedzieć, żeINT_MIN
,-1
,0
itd. Są wszystkie przypadki problem dla tego wyrażenia, i starają się odwrócić inżynier sposób wytwarzania tych wartości w czasie oceny.