电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
当一个.c文件包含很多个自定义变量,分步执行时会变0
已解决
73482
个问题
已帮助
5993
位优秀工程师
当一个.c文件包含很多个自定义变量,分步执行时会变0
lzxx
2018-06-13
浏览量:901
当一个.c文件包含很多个自定义变量,debug分步执行时会发现某个变量自动突然变0,改变该变量在代码文件中的行位置,该问题消失,这难道是玄学吗?
显示全部
嵌入式
关注问题
写回答
0
0
收起
我来回答
上传资料:
选择文件
文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
chen0000009
1、某个变量突然变0有可能是数组溢出
2、如果某个变量使用了动态分配内存的方法有可能出现这种现象的
发布于
2018-06-15
举报
评论 0
0
0
其他答案
数量:
15
fd38f4f3178d6cb1
不是玄学,你代码在不同的位置,和全局变量、局部变量、这些都有可能会影响这个,你把一个变量放在函数内部和外部,有时候会不一样的,我今天给一个结构体赋值,打死不对,后来才搞明白是怎么回事,跟位置还是有一定关系的。
发布于
2018-06-13
举报
评论 0
0
0
xdsnet
规范的C代码要求所有的变量定义都在头部。
发布于
2018-06-13
举报
评论 0
0
0
勇哥来巡山
这个跟你的编译器有关,实际那个变量是没有变化的,是你的编译器读取数据缓存更新导致数据变成0
发布于
2018-06-13
举报
评论 0
0
0
donatello
这个具体要给出实际例子才可以判断,C语言对变量的控制是非常复杂的,从生命周期划分,分为全局和局部变量,从属性划分,分为静态和动态变量,某些场合变量的确会自动清零。
发布于
2018-06-13
举报
评论 0
0
0
liulishiyi
我以前也遇到过,还是程序逻辑的问题,要弄明白有些寄存器什么时候清零,或者变量到底怎么变化的,变量的有效范围等等,还有跟编译器也有关系,
发布于
2018-06-14
举报
评论 0
0
0
代人凌峰
给个实际例子看看吧,或者定义为指针试试,看看是否还会清零。
发布于
2018-06-14
举报
评论 0
0
0
liangeeg
主要看下你变量的作用域内有没有其他改变他的值得地方,换了位置后代码执行得顺序就不一样了。有个实例才好说明问题,
发布于
2018-06-14
举报
评论 0
0
0
菜鸟冷虎
这个可能跟你的代码规范有关系,你是不是把变量设置成了静态局部变量
发布于
2018-06-14
举报
评论 0
0
0
@曲终人散@
一个是调试器清零的,一个是局部变量默认值为0
发布于
2018-06-14
举报
评论 0
0
0
hayden
如果你的变量没有初始化,可能会应为不同编译器导致变量值可能是0也很可能是其他随机数
发布于
2018-06-14
举报
评论 0
0
0
我是假管贴胸小助手
如果在你程序中没初始化变量,编译器会自动初始化为0。其次全局变量和局部变量也不同,全局变量会一直被保存,但是局部的变量使用完之后就释放了,变为了0.
发布于
2018-06-14
举报
评论 0
0
0
skawu
全局变量只能定义一次,其它文件要extern过去才可以用
发布于
2018-06-14
举报
评论 0
0
0
xietaigao
有可能内存被释放了等等原因,没有代码不好下结论
发布于
2018-06-15
举报
评论 0
0
0
汉云
是不是局部变量与全局变量还没有学习懂啊。
局部变量是在函数中有效,全局变量是一直有效的
发布于
2018-06-15
举报
评论 0
0
0
莱克迷KW
局部变量当跳出函数体后就是0,使用全局变量时,就不会自动变化
发布于
2018-06-19
举报
评论 0
0
0
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
当一个.c文件包含很多个自定义变量,分步执行时会变0
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: