<分区>
内部函数静态变量在再次调用时会保留它们的值,但为什么在这种情况下不会发生这种情况?
#include <stdio.h>
void print(void) {
static int x;
x = 10;
x += 5;
printf("%d ", x);
}
int main() {
print();
print();
return 0;
}
输出为 15 15
。
<分区>
内部函数静态变量在再次调用时会保留它们的值,但为什么在这种情况下不会发生这种情况?
#include <stdio.h>
void print(void) {
static int x;
x = 10;
x += 5;
printf("%d ", x);
}
int main() {
print();
print();
return 0;
}
输出为 15 15
。
最佳答案
您每次都分配一个新值:
static int x;
x = 10; // <- assignment
你可能想要的是初始化:
static int x = 10; // <- initialization
初始化在变量生命周期内只发生一次,static
意味着变量在程序的整个执行时间内都存在。
关于c - 静态变量不在函数中保留它们的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45906150/