错误输出C++

错误输出C++,c++,compiler-errors,C++,Compiler Errors,为什么输出错误 只要改变100就可以让它完美运行。为什么?我得到了正确的输出。原因可能是您在初始化变量时调用了函数。本质上,您是在声明一个变量,该变量可能在main之前初始化,也可能在C运行时库初始化之前初始化。在我看来,这像是一个编译器错误——似乎编译器已经内联了pow10,2的结果,并且忘记了转换为整数。如果手动内联,您将获得相同的结果。仅需稍加修改,无法使用发布的代码进行复制: #define ul unsigned namespace my_const{ const ul dec

为什么输出错误


只要改变100就可以让它完美运行。为什么?

我得到了正确的输出。原因可能是您在初始化变量时调用了函数。本质上,您是在声明一个变量,该变量可能在main之前初始化,也可能在C运行时库初始化之前初始化。在我看来,这像是一个编译器错误——似乎编译器已经内联了pow10,2的结果,并且忘记了转换为整数。如果手动内联,您将获得相同的结果。仅需稍加修改,无法使用发布的代码进行复制:
#define ul unsigned
namespace my_const{
    const ul decimal_accuracy_10 = pow(10, 2);//change rhs to 100 -> works fine
};
struct Vector2D{
    int x[2];
    Vector2D(float a, float b){
        x[0] = a*my_const::decimal_accuracy_10;
        x[1] = b*my_const::decimal_accuracy_10;
    }
    Vector2D(){}
    inline void print(){
        cout << "\n" << (float)x[0] / 100.0f << " " << x[1] / 100.0f << "\n";
    }
};
int main()
{
    Vector2D my(0.01f, 0.02f), ball(0.03f, 0.04f);
    my.print();
}
#define ul unsigned
namespace my_const{
    const ul decimal_accuracy_10 = 100;//change rhs to 100 -> works fine
};