注意:这是来自初学者。
为什么第一个输出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;
}
答案 0 :(得分:2)
静态变量只初始化一次(第一次使用时)。之后,它的行为就像在其他地方声明一样(我的意思是,初始化被忽略)。在第二个 main 中,初始化 static int j = 2;
仅第一次执行,之后,您将按顺序递增(即 2,3,4...)
在第一个循环中,您在每次迭代时设置它的值,这与初始化不同,因此可以多次运行。