再次声明变量时可以随机设置变量吗?

Tim*_*len 2 variables methods xcode declaration objective-c

在我的方法中,我声明了一些变量,包括int blockCount;.我不止一次称这种方法.使用Xcode调试器,我发现在第二次调用该方法之后,将值blockCount设置为364265,而将其设置为2,仅提前几毫秒.

这不是一个真正的问题,因为我可以将它设置为0或我想要的任何其他数字,但是一次又一次地声明某个变量是不好的编程习惯?我对编程很陌生,我想确保我正确地做事.:)

Jos*_*ell 7

如果声明变量但不为其提供值,则将其视为"未初始化".C中的未初始化变量具有"未定义"值 - 它通常是垃圾,包含上次写入内容时发生在该地址的任何内容.严格来说,"未定义"意味着您在任何情况下都不应该尝试使用该值.(如果你搜索"鼻子恶魔",这将用非常丰富多彩且有用的术语来解释.*)

这个变量是本地变量,每次运行时都会重新创建,因此每次传递都会获得一个新的实际值,但技术上仍然是未定义的值.

通常建议不要将变量保留为未初始化,因为"随机"值可能会导致难以发现的错误,并且偶尔会召唤出上述的恶魔.你没有做错什么,但如果你没有在声明的一行或两行中设置实际值,我建议将其初始化为0或一些合理的默认值:

int blockCount = 0;
Run Code Online (Sandbox Code Playgroud)

*另请参阅:C中声明的未初始化变量会发生什么?它有价值吗?

  • 只有`static`变量,在ARC下,它们是对象指针,而不是像`int`这样的原语.很高兴我能帮助你! (3认同)
  • @timjver我想添加一个注释,因为你说你是编程的新手,这就是它的原因之一.初始化为0需要少量的CPU时间.通过不初始化,这是一个轻微的性能增益.毕竟,您可能希望以不同于0的值开始.初始化为0是您可以跳过的步骤. (2认同)