关于C语言静态变量的问题 函数increment每次调用时static int x=0都执行吗

关于C语言静态变量的问题 函数increment每次调用时static int x=0都执行吗 如果语句每次都执行为什么是123,

static变量只初始化一次,每次调用结束时会保留结果,下次调用时的初始值是上一次调用结束时的值。也就是说语句static int x=0;只会执行一次。追问

这是怎么回事啊

追答

请不要搞这么奇葩的代码来折磨自己,我没有用过手机编程,不知道它是用的什么编译器,你的代码显然是错误的,在fun函数中,x被定义了两次,应该不能通过编译,但是你在手机上竟然能运行,这个不符合c语言规范,结果不明。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-23
静态变量只有在第一次初始化的时候执行,以后初始化就不在执行了!!!追问

这是怎么回事啊

追答

这是全部的代码吗?如果是的话,在fun函数里面改两处,第一去掉第二次的定义static int x,第二,定义x的时候就对x进行初始化。你可以试一下

追问

我的意思是第二次输出了0是不是证明x已经从0变成1又变成0了,第三次输出怎么就变成2了,应该是1啊

还是我这么编本身就是错的 所以不符合逻辑

相似回答