Ich habe ein einfaches C-Programm, das berechnet (1e200)^2, die eine Gleitkommaüberlauf Ausnahme verursachen sollte, da die größte double
1e308 oder so ist.Um einen Gleitkommaüberlauf zu erfassen excepiton
double square(double x){
return x*x;
}
int main(){
double x = 1e200;
double y= square(x);
}
Meine Fragen sind:
(1) Wie kann man die Ausnahme über eine Befehlszeile erfassen, so dass, wenn das Programm ausgeführt wird, kann die Ausnahme von dem Terminal ausgedruckt werden?
(2) Wie können Sie die Ausnahme erfassen, indem Sie zusätzliche Anweisungen einfügen, die während der Programmausführung das Gleitkommaausnahmesignal ausgeben? Aus Gründen der Allgemeingültigkeit würde ich es vorziehen, y==inf
nicht zu verwenden, um dieses Ziel zu erreichen.
Danke.
Für die nicht automatisierte Art der Überprüfung auf Fehler, siehe [hier] (http://stackoverflow.com/q/15655070/478288). – chrisaycock
etwas wie 'if (y == inf) {printf (" Überlauf ");}'? –
@ KamiKaze-- AFIK, Implementierungen sind nicht erforderlich, um 'inf' zu verwenden. –