1

我有一个 if else 语句,其中有 2 个完全正确的参数,但是第二个 if 给了我这个警告:

使用带有常量操作数的逻辑“&&”

使用的代码是:

else if ( !IS_WIDESCREEN && UIInterfaceOrientationPortrait) //No Warning or error
{

}
else if(IS_WIDESCREEN && UIInterfaceOrientationLandscapeRight) //Gives me the above warning
{

}

注意:IS_WIDESCREEN - 使用 iPhone 5 屏幕的测量值定义。

知道这是为什么吗?

///编辑:

添加了我如何定义 iPhone 5

#define IS_WIDESCREEN ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

整个事情都在这个方法里面:

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfa‌​ceOrientation duration:(NSTimeInterval)duration
4

2 回答 2

1

我认为应该是

else if ( !IS_WIDESCREEN && (interfaceOrientation == UIInterfaceOrientationPortrait)) {  
// ....
} else if(IS_WIDESCREEN && (interfaceOrientation == UIInterfaceOrientationLandscapeRight)) {  
// ....
} 

如果您在内部使用它,shouldAutoRotateToInterfaceOrientation因为您将一个常量值与IS_WIDESCREEN

于 2012-10-11T22:14:10.680 回答
1

如果在逻辑&&表达式中使用常量,则会收到警告,因为该常量无关紧要。想象一下常数是非负的。的结果与if (x && non-neg-constant)相同if (x)。同样,如果常数为零,if (x && 0)则永远不会为真。

因此,编译器会警告您,并暗示您可能正在尝试进行按位运算,检查特定位以查看它是否已设置。

于 2012-10-11T22:19:34.020 回答