在我的应用程序中,我有一个函数,它从最初分配_flightId
的长long 0
返回一个bool。在调用下面的函数之前的某个时刻,通常会为其分配一个值。
@property (nonatomic, assign) long long flightId;
- (BOOL)isReady
{
return (_flightId);
}
问题在于,有时即使分配了与0
不同的值,该函数也会返回0
。
例如:
如果_flightId
= 92559101
,该函数将返回1
。
如果_flightId
= 92559104
,该函数将返回0
。
有人可以解释这种行为吗?
答案 0 :(得分:1)
您的BOOL
可能只是定义为8位整数(char
),因此当您返回long long
时,您只是获得了低位8位。值92559104
为0x5845700
,如您所见,LS 8位全部设置为零。
您应该进行明确的转换,例如
return _flightId != 0;
或惯用语:
return !!_flightId;