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

标签 objective-c xcode variables methods declaration

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

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

最佳答案

如果您声明了一个变量但没有为其提供值,则它被视为“未初始化”。 C 中未初始化的变量具有“未定义”值——它通常是垃圾,包含上次在该地址写入内容时恰好位于该地址的所有内容。不过,严格来说,“未定义”意味着您在任何情况下都不应尝试使用该值。 (如果你搜索“nasal demons”,这将以非常丰富多彩且有用的术语进行解释。*)

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

一般建议不要让变量处于未初始化状态,因为“随机”值会导致难以发现的错误,偶尔会召唤出前面提到的鼻恶魔。你没有做错任何事,但如果你没有在声明的一两行中设置实际值,我建议将其初始化为 0 或一些合理的默认值:

int blockCount = 0;

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

关于objective-c - 再次声明时可以随机设置变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726817/

相关文章:

ios - ipatool 失败,出现异常 : #<NoMethodError: undefined method `toolsPath' for nil:NillClass>

ios - 将版本更改为 Swift 1.2 而不是 Swift 2.1

variables - ANSIBLE:在主机文件(ssh)上使用变量

mysql - 如何复制表的某列的值类型和长度?

ios - 如何创建多 ImageView 设计?

iphone - UIWebView - 无法在文本字段中显示当前 URL

objective-c - 错误 ITMS-90283 : "Invalid Provisioning Profile"

ios - 从 UITableView 中删除一行后,它仍然显示

ios - 如何将一个节点附加到另一个节点?

Javascript 不向函数传递值