C ++ - 如何在while循环后清除变量?

时间:2017-11-22 00:49:54

标签: c++ loops variables

我没有找到这种情况发生的原因,也没有找到避免它的方法。

在C ++中,我试图声明一个只在每个while循环中起作用的临时变量,并且在结束后应该被销毁。

我有这样的事情:

#include <iostream>

int main() {
    while (foo) {
        float SampleVariable;
        ...
        std::cout << SampleVariable << std::endl;
        ...
        SampleVariable = 20;
    }
    return 0;
}

在第一个循环中,SampleVariable输出值为5.8825e-39;但在第二个循环和以下循环中,SampleVariable的输出值为20

2 个答案:

答案 0 :(得分:2)

你必须明白,在计算中,当某些东西被破坏时,它不会被设置为0或某个魔法值。它只是设置为在下一个进程到来时被覆盖。

在你的循环中,你没有初始化SampleVariable,它只是采用了之前的价值。在第一次迭代中,它是之前的任何东西。在接下来的几次迭代中,它是SampleVariable在过去的迭代中的原因,因为偶然(不是真的),你的浮点数被分配到内存中的相同位置。

初始化您的变量,如

float SampleVariable = 0.f;

并且您的std::cout每次都会打印0。

答案 1 :(得分:1)

  

在第一个循环中,SampleVariable输出值为5.8825e-39,因为它应该是

实际上任何输出都是“它应该是什么”,因为您通过访问具有不确定值的对象来调用UB。没有办法“清除”变量。在每个循环中,其状态被重置为“不确定”,这意味着任何值都适用。你应该放弃尝试“重置”它。