Hoy estaba rastreando una excepción de punto flotante en algún código que acababa de escribir. Me tomó un poco de tiempo encontrarlo porque en realidad fue causado por tomar un cero de mod entero. Obviamente, hacer algo mod cero no va a ser definido, pero pensé que era extraño que el error fuera tan engañoso. ¿Qué hay dentro del operador del módulo de C++ que usaría el punto flotante para dos enteros? (Estoy usando gcc 4.3.2)¿Por qué un% b produce SIGFPE cuando b es cero?
Aquí hay un programa simple para demostrar el error.
int main()
{
int a=3,b=0;
int c=a%b;
return 0;
}