打印

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

[复制链接]
549|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pengf|  楼主 | 2021-2-17 21:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在进入一个函数时,定一个临时变量,对这个变量赋了一个全局变量的值.  现在调试模式中我观察到这个临时变量大概率没有正常被赋值.原因是那个全局变量不可能比临时变量小

使用特权

评论回复
沙发
pengf|  楼主 | 2021-2-17 21:47 | 只看该作者

使用特权

评论回复
板凳
yufe| | 2021-2-17 21:49 | 只看该作者
完全没看懂啥意思,局部变量只有在运行到相关函数体内才能在watch窗口观察到

使用特权

评论回复
地板
wangzsa| | 2021-2-17 21:52 | 只看该作者
"这个临时变量大概率没有正常被赋值" 具体是指什么?

使用特权

评论回复
5
zhanglli| | 2021-2-17 21:54 | 只看该作者
观察到赋值语句执行后,这个临时变量的值不对?

使用特权

评论回复
6
huwr| | 2021-2-17 21:56 | 只看该作者
还是该条赋值语句没有执行?

使用特权

评论回复
7
happy_10| | 2021-2-17 21:58 | 只看该作者
编译器优化等级是什么?

使用特权

评论回复
8
tian111| | 2021-2-17 22:00 | 只看该作者
最好把优化都关了再观察.

使用特权

评论回复
9
guoyt| | 2021-2-17 22:03 | 只看该作者

还有什么现象?能再详细描述下吗?

使用特权

评论回复
10
pengf|  楼主 | 2021-2-17 22:06 | 只看该作者
定一个16位的临时变量,这个变量取值为后面的一个16位的全局变量.在实际操作的时候发现全局变量的值不能完全赋值到临时变量里面.

使用特权

评论回复
11
supernan| | 2021-2-17 22:08 | 只看该作者
全局变量在串口接受中断中有自加的操作

使用特权

评论回复
12
chuxh| | 2021-2-17 22:09 | 只看该作者
在赋值的时候如果正好被中断打断赋值就会导致执行完赋值语句发现两个变量值并不相等的情况

使用特权

评论回复
13
49500199| | 2021-2-20 14:12 | 只看该作者
局部变量需要在其对应的函数中观察,出该函数后局部变量被污染,可能是一个任意值

使用特权

评论回复
14
奔波儿熊| | 2021-2-24 14:36 | 只看该作者
这个不可能吧,总觉得是你调试或者观察角度的问题

使用特权

评论回复
15
pengf|  楼主 | 2021-3-1 21:44 | 只看该作者
解决办法呢

使用特权

评论回复
16
juventus9554| | 2021-3-1 21:46 | 只看该作者
在定义和赋值之前把串口接受中断暂时关闭,

使用特权

评论回复
17
dingy| | 2021-3-1 21:48 | 只看该作者
对,完成赋值之后再打开就可以解决这个问题

使用特权

评论回复
18
supernan| | 2021-3-1 21:50 | 只看该作者
对一些全局变量的操作,一定要注意多线程(中断)的操作产生的影响

使用特权

评论回复
19
pengf|  楼主 | 2021-3-1 21:52 | 只看该作者

明白了,多谢大家讨论这么多哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

粉丝