1

Есть примитивный код

#include <iostream>
#include <cmath>

using namespace std;

int main() { int n = 5; int cnt = 2; int q = pow(n,cnt); cout << q; return 0; }

И почему то при компиляции под MinGW выводит 24, почему это так?

1 Answers1

0

Потому что pow возвращает результат типа double, который может, из-за ошибок вещественных чисел оказаться, например, 24.999999999999999. Далее, т.к. тип "принимающей" переменной – int, возвращённый double будет тоже преобразован в int, а при преобразовании к int дробная часть отбрасывается, в результате чего и получается 24.

В стандарте не сказано, как именно pow должна выполнять вычисления...

V-Mor
  • 5,127
joker
  • 130