从long long返回布尔值会有所不同

时间:2014-05-16 15:22:23

标签: ios boolean long-long

在我的应用程序中,我有一个函数,它从最初分配_flightId的长long 0返回一个bool。在调用下面的函数之前的某个时刻,通常会为其分配一个值。

@property (nonatomic, assign) long long flightId;

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

问题在于,有时即使分配了与0不同的值,该函数也会返回0

例如:

如果_flightId = 92559101,该函数将返回1

如果_flightId = 92559104,该函数将返回0

有人可以解释这种行为吗?

1 个答案:

答案 0 :(得分:1)

您的BOOL可能只是定义为8位整数(char),因此当您返回long long时,您只是获得了低位8位。值925591040x5845700,如您所见,LS 8位全部设置为零。

您应该进行明确的转换,例如

return _flightId != 0;

或惯用语:

return !!_flightId;
相关问题