零除异常如何运作?

时间:2010-01-03 17:45:19

标签: c++ exception

如何根据编译器/芯片级别计算除法?

为什么C ++总是在运行时而不是编译时抛出这些异常(如果在编译时已知除数为零)?

4 个答案:

答案 0 :(得分:2)

完全取决于编译器。如果你想为你的编译器写一个扩展来检查这类问题,你可以。

例如visual C ++:

答案 1 :(得分:2)

  1. 这取决于。某些处理器具有硬件除法指令。有些处理器必须做软件计算。
  2. 某些C ++编译器也不会在运行时陷阱。通常是因为没有硬件支持来捕获除以零。

答案 2 :(得分:1)

  1. 在芯片级,分部当然是用电路完成的。 Here's an overview二进制除法电路。
  2. 因为C ++编译器没有检查保证等于0的除数。它可以检查这个。

答案 3 :(得分:0)

  1. 大查找表。还记得那些学校的乘法表吗?同样的想法,但划分而不是乘法。显然不是每一个号码都在那里,但是这个数字被分成几块然后推到桌子上。

  2. 除法在运行时进行,而不是在编译时进行。是的,编译器可以看到除数为零,但大多数人不会写这样的无效语句。