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

时间:2012-03-15 19:31:50

标签: objective-c xcode variables methods declaration

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

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

1 个答案:

答案 0 :(得分:7)

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

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

通常建议不要将变量保留为未初始化,因为“随机”值可能会导致很难找到的错误,偶尔会召唤出上述的恶魔。你没有做错任何事,但如果你没有在声明的一行或两行中设置实际值,我建议将其初始化为0或一些合理的默认值:

int blockCount = 0;

*另请参阅:What happens to a declared, uninitialized variable in C? Does it have a value?