设置成员变量值后,该值在 getter 函数内部发生变化

after setting a member variable value the value is changing inside getter function

我正在尝试设置两个成员变量,它们是 float 类型,并且也成功设置了一个(这只是在 setter 函数内部直接分配)。但是另一个需要一些计算,并且 static_cast<float> 我在计算后配置了它。对于第二个变量,我在 setter 函数内部检查了它,发现它配置正确,但是当我试图通过 getter function 或直接通过 class object 获取它时,它显示出一些奇怪的东西值。

源代码:

# include <iostream>
# include <math.h>
using namespace std;

class dosomething{
    public:
        float res_value_a;
        float res_value_b;

        void set_res_value_a ()
        {
            res_value_a = 0.35;
        }

        float get_res_value_a(){
            return res_value_a;
        }

        void set_res_value_b(int  set_value_b)
        {
            int b = pow (2, 6);
            float res_value_b = static_cast<float>(set_value_b)/b;
            cout<<"value of res_value_b after setting is: "<<res_value_b<<endl;
        }

        float get_res_value_b()
        {
            cout<<"value of res_value_b inside of getter function: "<<res_value_b<<endl;
            return res_value_b;
        }
};

int main()
{
    dosomething obj;
    obj.set_res_value_a();
    float ret_get_val_a = obj.get_res_value_a();
    cout<<"ret_get_val_a: "<<ret_get_val_a<<endl; // return value from function get_res_value_a
    cout<<"member variable res_value_a: "<<obj.res_value_a<<endl; // checking member variable value by object

    int  set_value_b;
    cin>> set_value_b;
    obj.set_res_value_b(set_value_b);
    float ret_get_val_b = obj.get_res_value_b();
    cout<<"ret_get_val_b: "<<ret_get_val_b<<endl; // return value from function get_res_value_b
    cout<<"member variable res_value_b: "<<obj.res_value_b<<endl; // checking member variable value by object

    return 0;
}

对于 set_res_value_b 函数,我还提供了所需的输入和预期的输出--

if set_value_b = 64 then res_value_b = 1
if set_value_b = 20 then res_value_b = 0.3125
if set_value_b = 134 then res_value_b = 2.09375

我可以给出的一个错误值是 set_value_b = 20,即 res_value_b = 4.59149e-41。导致此错误的原因可能是什么?

            float res_value_b = static_cast<float>(set_value_b)/b;

设置的不是成员变量的值,而是局部变量。

去掉第一个float去掉局部变量,让它设置成员变量。

            res_value_b = static_cast<float>(set_value_b)/b;