Есть примитивный код
#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, почему это так?
powдаетdouble, кторый может оказаться, например, 24.999999999999999, и при преобразовании в int дробная часть отбрасывается. В стандарте не сказано, как именноpowдолжна выполнять вычисления... – Harry Jun 14 '20 at 18:29pow<int,int>и всё считается ок, без обвеса – Pavel Gridin Jun 14 '20 at 18:32pow<int,int>перегоняет аргументы вdouble. – Harry Jun 14 '20 at 18:56MinGW? Там разные компиляторы бывают. Вотgccпоследний, выводит 25. https://godbolt.org/z/k5-yEc – user393903 Jun 14 '20 at 19:36