从long返回的布尔值不同



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

@property (nonatomic, assign) long long flightId;
- (BOOL)isReady
{
    return (_flightId);
}

问题是,有时,即使它被分配了一个不同于0的值,该函数将返回0

例如:

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

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

谁能解释一下这种行为?

您的BOOL可能只是定义为8位int (char),所以当您返回long long时,您只是获得低阶8位。值925591040x5845700,你可以看到LS 8位全部设置为零。

你应该做一个显式转换,例如

return _flightId != 0;

或习惯用法:

return !!_flightId;

最新更新