布尔旗重置?

时间:2013-01-28 00:13:11

标签: c++ boolean

while(true){
    bool flag;
    while(true){
        if (conditions) {
            flag=true; 
            break;
        }
    }
}

在这种情况下,标志在退出内部while循环后是否重置为false状态?从控制台的显示器看,它仍处于真实状态。

1 个答案:

答案 0 :(得分:1)

不,没有“重置”。没有任何魔法。事实上,flag甚至不会被神奇地初始化为false,你必须自己做。

我认为你正在考虑范围和阴影的经典例子:

int a = 4;
//a is 4 here
{
    int a = 3;
    //a is 3 here
}
//a is 4 here

但这里也没有魔力。有两个不同的变量a 碰巧共享一个名称。内部块中的a指的是第二个整数。如果您可以引用第一个整数,那么您将读取一个完全不同的整数。

这是一些魔术:

SomeClass x; //x's constructor is called
{
    SomeOtherClass y; //y's constructor is called
} //y's destructor is called

由于y是自动的,因此它会在其范围的末尾被销毁。 (顺便说一句,第二个a也是如此,只有没有办法告诉。)如果它有一个析构函数,它将被调用。如果它的析构函数做了一些花哨的东西,比如“重置一些标志”,你就会看到结果。 (只有通过y才会消失。)

{}没有if / while / function /等的事实。附在他们身上是无关紧要的。