Welche Werte von x und y verursachen bei einigen C-Compilern einen Absturz?
int f(int x, int y) {
return (y==0) ? 0 : (x/y);
}
c
programming-puzzle
division
ugoren
quelle
quelle
Antworten:
-2147483648 (INT_MIN) und -1
$ gcc -Wall Division.c && ./a.out # => zsh: Gleitkomma-Ausnahme ./a.out
quelle
Die richtige Antwort ist bereits gegeben, aber ich habe sofort an Microsoft Pex gedacht .
Nachdem Sie Ihr Puzzle in der Sandbox-Site hinzugefügt haben , findet es die Antwort in wenigen Sekunden, genau wie die Antwort von Eregons. (Klicken Sie auf Ask Pex)
Hinweis: Dies geschieht in C #, aber die Sprache ist nicht wirklich relevant.
quelle
(x/y)
und wissen , dassINT_MIN
,-1
,0
usw. sind alle Problemfälle für diesen Ausdruck, und versuchen , einen Weg Reverse Engineering diese Werte zum Zeitpunkt der Auswertung zu erzeugen.