标题: C语言for(index = 0; index < 25; index++) index值不累加是什么原因? [打印本页]

作者: 3346661547    时间: 2021-11-26 20:30
标题: C语言for(index = 0; index < 25; index++) index值不累加是什么原因?
使用keil 4 调试ABOV芯片,index是一个函数的局部变量,进入for循环后index值不累加


作者: 188610329    时间: 2021-11-26 20:49
不累加? 难道……,你的意思是一直 =0 ,在循环里不出来了? for 变成 while(1) 了?
作者: liht1634    时间: 2021-11-27 09:36
在for处打断点,再单步,就知道了。
作者: 3346661547    时间: 2021-11-27 09:57
188610329 发表于 2021-11-26 20:49
不累加? 难道……,你的意思是一直 =0 ,在循环里不出来了? for 变成 while(1) 了?

打断点,在调试窗口不累加,确实是这样的
作者: 3346661547    时间: 2021-11-27 10:00
liht1634 发表于 2021-11-27 09:36
在for处打断点,再单步,就知道了。

就是打了断点在调试窗口看index的值不累加才知道的,这个函数里的index是局部变量,在其他函数里也用到几个index的局部变量,我把这个函数里的index局部变量变为index1,就是换个名字就累加了,我也不知道是什么原因
作者: davehua    时间: 2021-11-27 10:08
是不是定义的常量index啊
作者: chhyxf    时间: 2021-11-28 11:34
应该是断点的位置没选好,内存释放了
作者: npn    时间: 2021-11-28 13:08
davehua 发表于 2021-11-27 10:08
是不是定义的常量index啊

常亮会被替换成数字,都不可能通过编译。
作者: 天ノ忆    时间: 2021-11-29 16:25
直接看汇编代码,找找放在那个寄存器里了,然后单步运行,盯着这寄存器看
作者: wfqxgw    时间: 2021-11-29 17:05
估计是index是和其它变量冲突了。按标准。用最基本的i.j.k之类的看看。
作者: 3346661547    时间: 2021-11-30 08:16
wfqxgw 发表于 2021-11-29 17:05
估计是index是和其它变量冲突了。按标准。用最基本的i.j.k之类的看看。

换个名字就可以了,可是这个index是局部变量,不会冲突啊,这会不会与keil 4 的优化有关




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1