#include<stdio.h>
void print();
int main(){
print();
print();
return 0;
}
void print(){
static int x;
x=10;
x+=5;
printf("%d\t",x);
}
输出15 15
答案 0 :(得分:4)
您的代码中包含:
x = 10;
x = 15;
然后打印x。
然后你两次调用该函数。
为什么你再次认为第二次印刷会导致不同的结果;与第一个相比?!
你看,你首先要分配:10。加上5.为什么这会导致20?
提示 - 尝试将代码更改为:
static int x = 10;
x += 5;
长话短说:重新分配与重新初始化不一样!
答案 1 :(得分:0)
此处static
变量声明(初始化)为x
,然后每次10
未初始化时分配的值。
因此,您的计划15
和15
的输出已显示。
初始化和赋值都不同。请阅读stack overflow question。
我希望这会对你有所帮助并使你的疑问清楚。
答案 2 :(得分:0)
我认为你对静态变量的重新分配和重新初始化感到困惑。您必须在某处学习静态变量dosn在调用函数时重新初始化自身。因此,你期待回答15&amp; 20。
但问题是你每次都要重新分配x的值10。如果你修改你的代码,那么你可以实现你所期望的。
static int x=10;
x+=5;
这里,x仅在第一次初始化为10次。之后,对于每个函数调用,它将仅增加5。
希望这会有所帮助并使你的疑问清楚。