0

重複の可能性:
(Objective-)C intsは常に0に初期化されますか?

私はインターフェースを持っています

@interface MyInterface
{
   NSInteger _count;
}

@end

次に、私の実装では、私が使用しているのは次のとおりです。

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

そして、それは機能します。つまり、これが最初に実行されたとき、値をゼロに初期化したことはありませんが、実際には値は0です。

NSIntegerのデフォルト値が0だからですか?

4

3 に答える 3

4

==の代わりに書くつもりだったとすると=、その答えは、Objective-Cクラスのすべてのインスタンス変数(ivars)が0に初期化されるかnil、オブジェクトが作成されたときになります。質問(Objective-)Cintsは常に0に初期化されていますか?を参照してください。

if (_count = 0)実際に単一ので書いた場合=、それは期待したことをしていません-に0を割り当て、それがゼロ以外であるかどうかをテスト_countします(式はゼロ以外であるかどうかをテストします)。0を割り当てたばかりなので、ゼロ以外ではないため、テストは常に失敗します。if (x)x

于 2011-09-16T22:13:20.050 に答える
1

ifステートメントをに変更します

if (_count == 0)

二重の等しいは比較であり、単一の等しいは割り当てであることを忘れないでください

于 2011-09-16T22:10:36.193 に答える
1

使用している

if (_count=0)

これにより、値0が変数_countに設定され、このアクションが成功すると、間のコード{}が実行されます

変数使用比較演算子の値をテストします==

if(_count == 0)
于 2011-09-16T22:11:30.977 に答える