L'arithmétique Exception dans gdb, mais je ne suis pas diviser par zéro?

J'ai été faire un Floating point exception (core dumped) erreur dans mon programme en C++, et gdb montre que le problème est sur une ligne qui effectue une division modulo:

Program received signal SIGFPE, Arithmetic exception.
[Switching to Thread 0x7ffff6804700 (LWP 13931)]
0x00000000004023e8 in CompExp::eval (this=0x7fffec000e40, currVal=0)
    at exp.cpp:55
55              return (r==0) ? 0 : l % r;

La ligne en garde contre la division par zéro et mon backtrace affiche les éléments suivants:

#0  0x00000000004023e8 in CompExp::eval (this=0x7fffec000e40, currVal=0)
    at exp.cpp:55
        l = -2147483648
        r = -1

Car je sais que je ne suis pas diviser par zéro, quoi d'autre pourrait éventuellement être la cause de l'exception?

  • Le modulo d'un nombre négatif n'est pas défini, c'est probablement que, vous devriez probablement avoir (r <= 0)
  • Intéressant, l'opération, à mon avis, un sens pour un nombre négatif, mais vous avez raison.
InformationsquelleAutor crognale | 2012-12-31