关于c语言的pow函数

有人可以解释一下为啥pow在这种情况(只有以下的情况,转int不会,试了俩编译器)下调用多次会成这样吗,调试题目的时候发现的。

#include 
#include
int main(void)

{
    int n=5;
    long long int a=(long long int)pow((double)10,((double)n))-1;
    
    long long int b=(long long int)pow((double)10,((double)n))-1;//直接复制的上一行,改了一个a,,,

    printf("a=%d,b=%d",a,b);
   

}

img

printf("a=%lld,b=%lld",a,b);

我这边用MinGw-W64调试两个都是99999。你用的什么编译器。按道理不应该这样。