2

如果我的.h文件中有这个:

int index;

然后在.m我的文件中:

if (index == nil)

而且我还没有给 赋值index,这会成真吗?

编辑
我猜 nil 仅用于对象。那么尚未分配值的 int 的状态是什么?

4

4 回答 4

4

整数没有“零”这样的东西。那是一个对象值。至于默认初始化为哪些变量:

  • 非静态局部变量未初始化为任何已定义的值(实际上,它们通常具有先前在它们所占用的内存中的任何位模式)
  • 静态变量初始化为0
  • 全局变量初始化为 0
  • 实例变量初始化为 0

请注意,上面的第一条规则也适用于局部对象变量。它们不会为您进行零初始化。(不过,具有对象类型的实例变量将是。)

于 2010-06-25T01:29:38.313 回答
1

尚未分配的整数的值取决于其声明 -int如果您不为其分配任何其他内容,则静态存储持续时间为零。如果int您没有显式初始化它,则具有自动或分配的存储持续时间可能具有任何值。

顺便说一句,像这样在你的标题中放置一个对象声明肯定会在以后给你带来痛苦。

于 2010-06-25T01:33:54.420 回答
1

在您为其赋值之前,该变量在技术上是未定义的(可能具有任何值)。最有可能的是,它将等于零。此外,nil 和 NULL 都定义为零。但是,不建议进行这种比较。你应该只在比较指针时使用 nil (它不打算与原语一起使用)。

于 2010-06-25T01:18:04.433 回答
0

nil 是为 Objective-C 对象指针保留的特定值。它与 NULL (0) 非常相似,但与消息传递一起使用时具有不同的语义。

像 int 这样的本地原始数据类型在 Objective-C 中没有被初始化。index 的值在您写入之前不会被定义。

void foo () {
   //initialize local variable
   int x = 5;
}

//initialise static variable
static int var = 6; 
于 2010-06-25T01:18:05.457 回答