函数中临时变量赋值的疑问

[复制链接]
829|18
 楼主| pengf 发表于 2022-9-3 15:13 | 显示全部楼层 |阅读模式
在进入一个函数时,定一个临时变量,对这个变量赋了一个全局变量的值.  现在调试模式中我观察到这个临时变量大概率没有正常被赋值.原因是那个全局变量不可能比临时变量小
 楼主| pengf 发表于 2022-9-3 15:15 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
pangb 发表于 2022-9-3 15:17 | 显示全部楼层
完全没看懂啥意思,局部变量只有在运行到相关函数体内才能在watch窗口观察到
zwll 发表于 2022-9-3 15:19 | 显示全部楼层
"这个临时变量大概率没有正常被赋值" 具体是指什么?
dengdc 发表于 2022-9-3 15:26 | 显示全部楼层
观察到赋值语句执行后,这个临时变量的值不对?
supernan 发表于 2022-9-3 15:28 | 显示全部楼层
还是该条赋值语句没有执行?
lizye 发表于 2022-9-3 15:31 | 显示全部楼层
编译器优化等级是什么?
wyjie 发表于 2022-9-3 15:34 | 显示全部楼层
最好把优化都关了再观察.
 楼主| pengf 发表于 2022-9-3 15:38 | 显示全部楼层
定一个16位的临时变量,这个变量取值为后面的一个16位的全局变量.在实际操作的时候发现全局变量的值不能完全赋值到临时变量里面.
heweibig 发表于 2022-9-3 15:43 | 显示全部楼层

全局变量在串口接受中断中有自加的操作
ousj 发表于 2022-9-3 15:46 | 显示全部楼层
在赋值的时候如果正好被中断打断赋值就会导致执行完赋值语句发现两个变量值并不相等的情况
dengdc 发表于 2022-9-3 15:48 | 显示全部楼层
局部变量需要在其对应的函数中观察,出该函数后局部变量被污染,可能是一个任意值
dengdc 发表于 2022-9-3 15:50 | 显示全部楼层
这个不可能吧,总觉得是你调试或者观察角度的问题
 楼主| pengf 发表于 2022-9-3 15:52 | 显示全部楼层
解决办法呢
xxrs 发表于 2022-9-3 15:57 | 显示全部楼层
在定义和赋值之前把串口接受中断暂时关闭,
jlyuan 发表于 2022-9-3 15:59 | 显示全部楼层
对,完成赋值之后再打开就可以解决这个问题
supernan 发表于 2022-9-3 16:01 | 显示全部楼层
对一些全局变量的操作,一定要注意多线程(中断)的操作产生的影响
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部