Quelles valeurs de x et y provoqueront un crash avec certains compilateurs C?
int f(int x, int y) {
return (y==0) ? 0 : (x/y);
}
c
programming-puzzle
division
ugoren
la source
la source
Réponses:
-2147483648 (INT_MIN) et -1
$ gcc -Wall division.c && ./a.out # => zsh: exception à virgule flottante ./a.out
la source
La bonne réponse est déjà donnée, mais j'ai immédiatement pensé à Microsoft Pex .
Après avoir ajouté votre puzzle dans le site sandbox, il trouve la réponse en quelques secondes, la même que la réponse eregons. (cliquez sur demander pex)
Remarque: il le fait en C #, mais le langage n'est pas vraiment pertinent.
la source
(x/y)
et savoir queINT_MIN
,-1
,0
etc. sont tous les cas de problème pour cette expression, et essayer de désosser une façon de produire ces valeurs au moment de l' évaluation.