C ++ pow()函数在放入函数时会更改行为

我已经用C ++编程了一段时间了。以前我曾见过幂函数由于精度问题而对较大的幂给出了错误的答案,但是今天在解决编码问题时,我看到在相同类型的参数下,将pow()函数放在函数中与直接评估时给出的值不同。

 #include<iostream>
 #include<math.h>
 using namespace std;
 #define ll long long
 ll n,d;

 ll power(ll x)
 {
    return pow(100,x);
 }

 ll powersecond(ll x)
 {
    return pow(100,(int)x);
 }
 int main()
 {
    n = 68; d = 2;
    cout<<n*power(d)<<endl;        // outputs 679932
    cout<<n*pow(100,d)<<endl;      // outputs 680000
    cout<<n*powersecond(d)<<endl;  // outputs 679932
    cout<<n*pow(100,(int)d)<<endl; // outputs 680000
    return 0;
 }

请注意,即使在powersecond()函数中将x转换为整数后,答案也不会改变。即使d是int而不是long long int,答案仍然是679932。 我使用的编译器是VS Code中的gnu gcc编译器。