Quais valores de x e y causarão uma falha em alguns compiladores C?
int f(int x, int y) {
return (y==0) ? 0 : (x/y);
}
c
programming-puzzle
division
Ugoren
fonte
fonte
Respostas:
-2147483648 (INT_MIN) e -1
$ gcc -Wall division.c && ./a.out # => zsh: exceção de ponto flutuante ./a.out
fonte
A resposta certa já foi dada, mas pensei imediatamente no Microsoft Pex .
Depois de adicionar seu quebra-cabeça no site da sandbox, ele encontra a resposta em alguns segundos, o mesmo que o eregons responde. (clique em pedir pex)
Nota: faz isso em C #, mas o idioma não é realmente relevante.
fonte
(x/y)
e saber queINT_MIN
,-1
,0
etc, são todos os casos de problemas para essa expressão, e tentar fazer engenharia reversa de uma maneira de produzir esses valores no momento da avaliação.