Dlaczego% b produkuje SIGFPE, gdy b wynosi zero?

Dzisiaj śledziłem wyjątek zmiennoprzecinkowy w jakimś właśnie napisanym kodzie. Trochę czasu zajęło znalezienie, ponieważ było to spowodowane przyjęciem liczby całkowitej zero. Oczywiście robienie czegokolwiek mod zero nie będzie zdefiniowane, ale pomyślałem, że to dziwne, że błąd był tak mylący. Co to jest w ramach operatora modulo C ++, który używałby zmiennoprzecinkowych dla dwóch liczb całkowitych? (Używam gcc 4.3.2)

Oto prosty program do zademonstrowania błędu.

int main()
{
    int a=3,b=0;
    int c=a%b;
    return 0;
}

questionAnswers(2)

yourAnswerToTheQuestion