Nun, ich habe die Artikel über SIGFPE gesucht, dann habe ich ein paar Tests geschrieben, aber es ist merkwürdig. Dann muss ich es hier posten, um Hilfe zu erbitten. Ist GCC/G ++ oder ISO C++ klar definiert, was passiert, wenn durch Null geteilt wird?Was macht C/C++ - Handler SIGFPE?
1) ich den Artikel gesucht: Division by zero does not throw SIGFPE Sames es die Ausgabe
2) inf ist, wenn ich es wie folgt umschreiben:
void signal_handler (int signo) {
if(signo == SIGFPE) {
std::cout << "Caught FPE\n";
}
}
int main (void) {
signal(SIGFPE,(*signal_handler));
int b = 1;
int c = 0;
int d = b/c;
//fprintf(stderr,"d number is %d\n,d);
return 0;
}
dann signal_handler wird geschieht nicht. aber wenn ich die Zeile
auskommentieren dann ruft signal_handler weiter.
kann jemand es erklären?
Integer Division durch Null noch erhöht 'SIGFPE' (Floating-Point-Fehler), aber durch Nullpunkt Teilung Floating ergibt unendlich als Antwort. –
'int c = 0; int d = b/c; '? was bedeutet "b/0"? – billz
Ich wiederhole dich nicht genau: Ich bekomme das Signal nur einmal und dann wird das Programm beendet, mit oder ohne 'printf'. Wenn ich 'signal (SIGFPE, (* signal_handler));' innerhalb des Signal-Handlers hinzufüge, dann reproduziere ich Sie. Linux 3.10, gcc 4.7.3. –