0

_flightId私のアプリには、最初に割り当てられた long long 値から bool を返す関数があります0。以下の関数を呼び出す前のある時点で、通常は値が割り当てられます。

@property (nonatomic, assign) long long flightId;

- (BOOL)isReady
{
    return (_flightId);
}

問題は、場合によっては、 とは異なる値が割り当てられている場合でも0、関数が を返すこと0です。

例えば:

if _flightId=92559101関数は を返し1ます。

_flightId=の場合92559104、関数は を返し0ます。

誰かがこの動作を説明できますか?

4

1 に答える 1

1

あなたBOOLはおそらく8ビットのint(char)として定義されているので、 a を返すと、long longこれの下位8ビットを取得しているだけです。値925591040x5845700、ご覧のとおり、LS 8 ビットがすべてゼロに設定されているものです。

たとえば、明示的な変換を行う必要があります。

return _flightId != 0;

または慣用句:

return !!_flightId;
于 2014-05-16T15:29:40.923 に答える