c语言关于静态变量的问题

img


请问最后结果的12是怎么来的 去掉static后变成11又是为什么?

一、有 static

简单理解 static 的生命周期是全局的,也就是说,有static 在,那么 c = 3 只有第一次的时候奏效;
第一个循环结束:a = 3, m = 3, c = 4; 返回 10
第二个循环结束:a = 3, m = 4, c = 5; 返回 12

二、无 static

每次 c = 3 都奏效;
第一个循环结束:a = 3, m = 3, c = 4; 返回 10
第二个循环结束:a = 3, m = 4, c = 4; 返回 11