在 g++ 10.2 中 0 除以 0 结果为 1

0 divided by 0 results in 1 in g++ 10.2

以下代码在使用 g++ 10.2 编译时打印 gcc says: 0 / 0 equals 1

#include <iostream>

int main() {
  int a = 0;
  std::cout << "gcc says: 0 / 0 equals " << (a / a) << std::endl;
  return 0;
}

Run it on godbolt

编辑:使用 -fsanitize=undefined 编译会使 g++ 产生运行时错误。感谢@chris.

除以零是未定义的行为。编译器将继续做任何使代码 运行 最快的事情。而且它甚至不会保持一致。

没有办法使这个结果导致编译器错误,因为编译器在编译时并不总是知道分母是否为 0。你必须自己做检查。