当一个.c文件包含很多个自定义变量,debug分步执行时会发现某个变量自动突然变0,改变该变量在代码文件中的行位置,该问题消失,这难道是玄学吗? 

最佳答案

  • chen0000009 发表于2018-06-15

    1、某个变量突然变0有可能是数组溢出

    2、如果某个变量使用了动态分配内存的方法有可能出现这种现象的

    举报 评论 0

其他答案

  • fd38f4f3178d6cb1 发表于 2018-06-13

    不是玄学,你代码在不同的位置,和全局变量、局部变量、这些都有可能会影响这个,你把一个变量放在函数内部和外部,有时候会不一样的,我今天给一个结构体赋值,打死不对,后来才搞明白是怎么回事,跟位置还是有一定关系的。

    举报 评论 0

  • xdsnet 发表于 2018-06-13

    规范的C代码要求所有的变量定义都在头部。

    举报 评论 0

  • 勇哥来巡山 发表于 2018-06-13

    这个跟你的编译器有关,实际那个变量是没有变化的,是你的编译器读取数据缓存更新导致数据变成0

    举报 评论 0

  • donatello 发表于 2018-06-13

    这个具体要给出实际例子才可以判断,C语言对变量的控制是非常复杂的,从生命周期划分,分为全局和局部变量,从属性划分,分为静态和动态变量,某些场合变量的确会自动清零。

    举报 评论 0

  • liulishiyi 发表于 2018-06-14

    我以前也遇到过,还是程序逻辑的问题,要弄明白有些寄存器什么时候清零,或者变量到底怎么变化的,变量的有效范围等等,还有跟编译器也有关系,

    举报 评论 0

  • 代人凌峰 发表于 2018-06-14

    给个实际例子看看吧,或者定义为指针试试,看看是否还会清零。

    举报 评论 0

  • liangeeg 发表于 2018-06-14

    主要看下你变量的作用域内有没有其他改变他的值得地方,换了位置后代码执行得顺序就不一样了。有个实例才好说明问题,

    举报 评论 0

  • 菜鸟冷虎 发表于 2018-06-14

    这个可能跟你的代码规范有关系,你是不是把变量设置成了静态局部变量

    举报 评论 0

  • @曲终人散@ 发表于 2018-06-14

    一个是调试器清零的,一个是局部变量默认值为0

    举报 评论 0

  • hayden 发表于 2018-06-14

    如果你的变量没有初始化,可能会应为不同编译器导致变量值可能是0也很可能是其他随机数

    举报 评论 0

  • 奔跑的黑蚂蚁 发表于 2018-06-14

    如果在你程序中没初始化变量,编译器会自动初始化为0。其次全局变量和局部变量也不同,全局变量会一直被保存,但是局部的变量使用完之后就释放了,变为了0.

    举报 评论 0

  • skawu 发表于 2018-06-14

    全局变量只能定义一次,其它文件要extern过去才可以用

    举报 评论 0

  • xietaigao 发表于 2018-06-15

    有可能内存被释放了等等原因,没有代码不好下结论

    举报 评论 0

  • 靳飞 发表于 2018-06-15 云汉达人

    是不是局部变量与全局变量还没有学习懂啊。

    局部变量是在函数中有效,全局变量是一直有效的

    举报 评论 0

  • 莱克迷KW 发表于 2018-06-19

    局部变量当跳出函数体后就是0,使用全局变量时,就不会自动变化

    举报 评论 0

我来回答

试用推荐

ESP32 WIFI+蓝牙

产品总数:50个  申请人数:237

距离结束时间:

推荐达人 更多>

  • 王奕 向ta提问

    Eagleson

    在学习FPGA的道路上 我们一起成长吧!

    在行: FPGA/CPLD

  • 靳飞 向ta提问

    汉云

    在路上的Linuxer

    在行: DSP技术 Linux 系统 STM32讨论区 PIC单片机 PCB技术/设计/定制

  • Angel Cherry 向ta提问

    MOP

    用愛和熱忱寫好每一行Code

    在行: FPGA/CPLD Linux 系统 热门单片机

  • 徐珂靖 向ta提问

    xukejing

    Linux系统 、热门开发板

    在行: Linux 系统

  • 袁建明 向ta提问

    河北博联科技有限公司 研发部经理

    日知其所亡

    在行: Linux 系统 灵动微MCU 电源技术

完成答题
赶快去开启您的宝箱吧
回答问题攒积分送开发板