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 位。如您所见,该值92559104将LS 8 位全部设置为零。0x5845700

您应该进行显式转换,例如

return _flightId != 0;

或惯用语:

return !!_flightId;
于 2014-05-16T15:29:40.923 回答