会打印出什么?6.6还是6.7?为什么?

void foo()
{
    static int x = 5;
    x++;
    printf("%d", x);
}

int main()
{
    foo();
    foo();
    return 0;
}

推荐答案

这里有两个问题,生命周期和范围.

变量的作用域是可以看到变量名称的地方.这里,x仅在函数foo()内可见.

变量的生存期是它存在的时间段.如果定义x时没有关键字静电,生存期将是从进入foo()时到从foo()时返回;因此,每次调用都会将其重新初始化为5.

关键字static将变量的生存期延长到程序的生存期;e、 g.初始化只发生一次,然后变量保留其值——不管它是什么——在所有future 调用foo()的过程中.

C++相关问答推荐

有什么方法可以检测SunOS上的SparcWorks吗?

常数函数指针优化

sizeof结果是否依赖于字符串的声明?

MISRA C:2012 11.3违规强制转换(FLOAT*)到(uint32_t*)

将 struct 变量赋给自身(通过指针取消引用)是否定义了行为?

将常量转换为指针会增加.数据大小增加1000字节

在基本OpenGL纹理四边形中的一个三角形中进行渲染

对于C中给定数组中的每个查询,如何正确编码以输出给定索引范围(1到N)中所有数字的总和?

理解C版宏(看起来像未声明的变量?)

#定义SSL_CONNECTION_NO_CONST

试图创建一个基本的Word克隆,但遇到了障碍

CS50判断灯泡运动的问题,判断时多出一个灯泡,但不在终端上

链接器脚本和C程序使用相同的头文件,这可能吗?

当用C打印过多的';\n';时输出不正确

是否有单独的缓冲区用于读写库调用?

赋值两侧的后置增量,字符指针

为什么GCC不能在 struct 初始值设定项中以sizeof作为条件的三进制中处理复合文字的编译时求值?

当另一个指向 const 的指针观察到数据时,通过指针更改数据是否安全?

GDB 跳过动态加载器代码

将字节/字符序列写入标准输出的最简单形式