我只是在玩,写了这个非常简单的代码
int main()
{
static int Z=500;
printf("\n Value of Z is:%d",Z);
incrementZ(Z);
printf("\n Value of Z is:%d",Z);
incrementZ(Z);
printf("\n Value of Z is:%d",Z);
}
void incrementZ(static int number)
{
number++;
}
为什么静态变量在这里没有递增?
最佳答案
你在 Windows 上,所以检查 this link .
根据文档,static
将被任一可用的标准存储类替换。存在三种可能的情况,
- auto :如果标识符是形式参数或局部变量。
- extern:如果标识符是一个函数。
- 无存储类:如果标识符是全局变量。
它将允许编译,只产生一个警告 [C4042] 说类似的话
C4042 : identifier .. has bad storage class
但是,补充一下,在 linux gcc 上,这不符合要求。它会抛出一个错误说
error: storage class specifiers invalid in parameter declarations
关于c - 静态变量不维护它的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26928614/