C 为什么输出是15 15而不是15 20? #包括 作废打印(); int main(){ 打印(); 打印(); 返回0; } 作废打印(){ 静态int x; x=10; x+=5; printf(“%d\t”,x); }
输出15您的代码显示:C 为什么输出是15 15而不是15 20? #包括 作废打印(); int main(){ 打印(); 打印(); 返回0; } 作废打印(){ 静态int x; x=10; x+=5; printf(“%d\t”,x); },c,static,C,Static,输出15您的代码显示: #include<stdio.h> void print(); int main(){ print(); print(); return 0; } void print(){ static int x; x=10; x+=5; printf("%d\t",x); } 然后打印出x 然后调用该函数两次 为什么你认为第二次印刷会产生不同的结果;和
#include<stdio.h>
void print();
int main(){
print();
print();
return 0;
}
void print(){
static int x;
x=10;
x+=5;
printf("%d\t",x);
}
然后打印出x
然后调用该函数两次
为什么你认为第二次印刷会产生不同的结果;和第一个相比
你看,你从分配:10开始。加5。为什么会有20个呢
提示-尝试将代码更改为:
x = 10;
x = 15;
长话短说:重新分配与重新初始化不同 此处
static
变量声明(初始化)为x
,然后每次10
未初始化时分配值
因此,将显示程序15
和15
的输出
初始化和赋值都是不同的。请看这个
我希望这能帮助您澄清您的疑问。我认为您对重新分配和重新初始化静态变量感到困惑。您一定在什么地方了解到,无论何时调用函数,静态变量都不会重新初始化自身。因此,您希望得到答案15和20 但问题是你每次都在给x赋值10。如果您像下面这样修改您的代码,那么您就可以实现您所期望的
static int x = 10;
x += 5;
这里,x仅在第一次被初始化为10。之后,对于每个函数调用,它只会增加5
希望这将有助于澄清您的疑问。请格式化您的代码。@Blorgbeard您能告诉我输出吗?他的意思是:所以有很好的标记来正确格式化源代码。在这里发布代码之前,您希望转到帮助中心了解这些信息。作为一个例子,看看我的答案中的两行是如何格式化的!
static
变量的可能重复项仅初始化一次。由于x是静态的,它应首先打印15,然后相应地,由于x是静态的,它应打印20或不打印?请参阅我的更新答案。关键是:您不是在“重新初始化”。您正在重新分配。这不是一回事。你知道,你期望x=x+5
给x一个新值;但是您希望x=10
不会产生任何效果?它是静态的,因此x不会再次初始化并重新启动again@DhruvBhardwaj“重新初始化”和“重新赋值”是不同的事情。你能用更简单的方式解释吗?@ M.S.ChordHARI,但是我的编译器,即DEV C++给出了15。15@DhruvBhardwaj同样的o/p 1520谢谢我现在知道了不客气。投票选出有用的答案总是可以接受的。
static int x=10;
x+=5;