• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

当一个.c文件包含很多个自定义变量,分步执行时会变0

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

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 1、某个变量突然变0有可能是数组溢出

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

    • 发布于 2018-06-15
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:15
  • 不是玄学,你代码在不同的位置,和全局变量、局部变量、这些都有可能会影响这个,你把一个变量放在函数内部和外部,有时候会不一样的,我今天给一个结构体赋值,打死不对,后来才搞明白是怎么回事,跟位置还是有一定关系的。
    • 发布于2018-06-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 规范的C代码要求所有的变量定义都在头部。
    • 发布于2018-06-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个跟你的编译器有关,实际那个变量是没有变化的,是你的编译器读取数据缓存更新导致数据变成0
    • 发布于2018-06-13
    • 举报
    • 评论 0
    • 0
    • 0

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

    • 发布于2018-06-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 我以前也遇到过,还是程序逻辑的问题,要弄明白有些寄存器什么时候清零,或者变量到底怎么变化的,变量的有效范围等等,还有跟编译器也有关系,
    • 发布于2018-06-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 给个实际例子看看吧,或者定义为指针试试,看看是否还会清零。
    • 发布于2018-06-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 主要看下你变量的作用域内有没有其他改变他的值得地方,换了位置后代码执行得顺序就不一样了。有个实例才好说明问题,
    • 发布于2018-06-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个可能跟你的代码规范有关系,你是不是把变量设置成了静态局部变量
    • 发布于2018-06-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 一个是调试器清零的,一个是局部变量默认值为0
    • 发布于2018-06-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果你的变量没有初始化,可能会应为不同编译器导致变量值可能是0也很可能是其他随机数
    • 发布于2018-06-14
    • 举报
    • 评论 0
    • 0
    • 0

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

  • 全局变量只能定义一次,其它文件要extern过去才可以用
    • 发布于2018-06-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 有可能内存被释放了等等原因,没有代码不好下结论
    • 发布于2018-06-15
    • 举报
    • 评论 0
    • 0
    • 0

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

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

    • 发布于2018-06-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 局部变量当跳出函数体后就是0,使用全局变量时,就不会自动变化
    • 发布于2018-06-19
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

当一个.c文件包含很多个自定义变量,分步执行时会变0