声明和初始化 C++ 静态变量

时间:2021-03-28 18:20:52

标签: c++

注意:这是来自初学者。

为什么第一个输出333,第二个输出345?

在第二个代码中它是否跳过了声明?我的意思是它应该像第一个一样再次初始化“j”变量。

int main() {
    static int j =12;
    for(int i=0; i<=2; i++) {
        j = 2;
        j += 1;
        std::cout<<j;
    }
    return 0;
}

int main() {
    
    for(int i=0; i<=2; i++) {
        static int j = 2;
        j += 1;
        std::cout<<j;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:2)

静态变量只初始化一次(第一次使用时)。之后,它的行为就像在其他地方声明一样(我的意思是,初始化被忽略)。在第二个 main 中,初始化 static int j = 2; 仅第一次执行,之后,您将按顺序递增(即 2,3,4...) 在第一个循环中,您在每次迭代时设置它的值,这与初始化不同,因此可以多次运行。