标题:
C语言局部变量自加的问题
[打印本页]
作者:
hxdby
时间:
2022-4-17 21:14
标题:
C语言局部变量自加的问题
如下的C语言函数:
viod time_compute(void)
{
unsigned char time_set =1;
if(key_num)
{
time_set ++;
if(time_set >1)
{
time_set =0;
}
key_num=0;
}
}
key_num是通过按键操作的,按一下,time_set自加1,实际测试时发现,time_set没有执行(没有发生自加),后来稀里糊涂的在unsigned char time_set=1;之前加了static, 变成这样:static unsigned char time_set=1; 程序就正常了,按按键时,可以自加了。
本人小白,初学者,有点搞不明白,为啥会这样呢?
作者:
chenchuanke
时间:
2022-4-17 22:22
加了static进入函数只对unsigned char time_set=1操作一次,不加的话每次进入都操作=1,当你自加1了,下次一进入又=1,相当于没自加
作者:
188610329
时间:
2022-4-17 22:29
把 =1 去掉即可。
作者:
188610329
时间:
2022-4-17 22:33
把函数内的 unsigned char time_set =1; 放到函数外, 然后, 把 函数内的 unsigned char time_set =1; 去掉即可
作者:
hhh402
时间:
2022-4-18 00:31
static unsigned char time_set=1; static是静态变量的意思。简单点说就是只能够被本函数使用的全局变量。 time_set=1只是被执行一次,之后time_set的值一直都会被保存,就像是全局变量。但是别的函数不可以使用这个变量。
作者:
yzwzfyz
时间:
2022-4-18 16:34
关键是:在调用viod time_compute(void)之前,time_set =?
明白这一点就OK了。
调用前:局部变量,是不确定的,=0是对你客气了。
静态变量,你不动它,它不变,所以它会是上次退出时的值。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1