为什么我的代码与我一起初始化 NSInteger?

发布于 2024-12-04 21:59:28 字数 463 浏览 1 评论 0原文

可能的重复:
(Objective-)C int 始终初始化为 0?

我有一个接口

@interface MyInterface
{
   NSInteger _count;
}

@end

然后在我的实现中我只是使用 is as

if (_count==0)
{
  //do somthing
}
_count++;

并且它可以工作,即第一次执行时该值实际上是 0,即使我从未将其初始化为零。

是因为NSInteger的默认值是0吗?

Possible Duplicate:
(Objective-)C ints always initialized to 0?

I have an interface

@interface MyInterface
{
   NSInteger _count;
}

@end

Then in my implementation I am just using is as

if (_count==0)
{
  //do somthing
}
_count++;

And it works i.e. the first time around when this is executed the value is in fact 0 even though I never initialized it to be zero.

Is it because the default value of NSInteger is 0?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

给我一枪 2024-12-11 21:59:28

假设您打算编写 == 而不是 =,答案是 Objective-C 类的所有实例变量 (ivars) 都会初始化为 0 或 nil 当对象被创建时。请参阅问题(Objective-)C 整数始终初始化为 0?

如果您实际上使用单个 = 编写了 if (_count = 0),那么这并没有达到您的预期 - 它会将 0 分配给 _count ,然后测试它是否非零(表达式 if (x) 测试 x 是否非零)。由于您刚刚为其分配了 0,因此它不是非零,因此测试总是会失败。

Assuming you meant to write == instead of =, the answer is that all of the instance variables (ivars) of an Objective-C class get initialized to 0 or nil when the object gets created. See the question (Objective-)C ints always initialized to 0?.

If you actually wrote if (_count = 0) with a single =, then that's not doing what you expected -- it's assigning 0 to _count, and then testing if it's non-zero (the expression if (x) tests if x is non-zero). Since you just assigned 0 to it, it's not non-zero, so the test will always fail.

心如荒岛 2024-12-11 21:59:28

更改 if 语句以

if (_count == 0)

记住双等于是比较,单等于是赋值

change your if statement to

if (_count == 0)

remember double equals is comparison, single equals is assignment

南街女流氓 2024-12-11 21:59:28

您使用

if (_count=0)

此功能会将值 0 设置为变量 _count,如果此操作成功,则会执行 {} 之间的代码

来测试变量的值使用比较运算符==

if(_count == 0)

you are using

if (_count=0)

this will set value 0 to variable _count, and if this action success, code between {} is executed

to test value of variable use comparison operator ==

if(_count == 0)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文