为什么输出是15 15而不是15 20?

时间:2016-08-31 04:44:11

标签: c static

#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

3 个答案:

答案 0 :(得分:4)

您的代码中包含:

 x = 10;
 x = 15;

然后打印x。

然后你两次调用该函数。

为什么你再次认为第二次印刷会导致不同的结果;与第一个相比?!

你看,你首先要分配:10。加上5.为什么这会导致20?

提示 - 尝试将代码更改为:

static int x = 10;
x += 5;

长话短说:重新分配与重新初始化不一样!

答案 1 :(得分:0)

此处static变量声明(初始化)为x,然后每次10未初始化时分配的值。

因此,您的计划1515的输出已显示。

初始化和赋值都不同。请阅读stack overflow question

我希望这会对你有所帮助并使你的疑问清楚。

答案 2 :(得分:0)

我认为你对静态变量的重新分配和重新初始化感到困惑。您必须在某处学习静态变量dosn在调用函数时重新初始化自身。因此,你期待回答15&amp; 20。

但问题是你每次都要重新分配x的值10。如果你修改你的代码,那么你可以实现你所期望的。

static int x=10;
x+=5;

这里,x仅在第一次初始化为10次。之后,对于每个函数调用,它将仅增加5。

希望这会有所帮助并使你的疑问清楚。