我想在 3 个不同的按钮上比较 3 个图像,Xcode 允许我一次比较 2 个图像,但是当我为 3 个图像编写代码时,它会发出警告 “指针与整数的比较”
-(void)compare
{
if (b1.currentImage==b2.currentImage==b3.currentImage)
{
b1.enabled=NO;
b2.enabled=NO;
b3.enabled=NO;
NSLog(@"%@",b1.currentImage);
NSLog(@"%@",b2.currentImage);
}
else
{
UIImage *btnImage = [UIImage imageNamed:@"card.png"];
[b1 setImage:btnImage forState:UIControlStateNormal];
}
}
最佳答案
写作时通常会说:
a == b == c
这实际上归结为
(a == b) == c
因此,您将 a
和 b
的比较结果(无论 a 和 b 的类型如何,都是 bool 类型)与 c 进行比较
无论 c
的类型是什么。
因此,在您的情况下,您将 b1.currentImage==b2.currentImage
(其类型为 int
)与 b3.currentImage
进行比较,其中是一个指针类型。
如果您想比较三个值是否相等,您必须编写:
(a == b) && (a == c)
而不是 a == b == c
尝试这个小程序并观察它打印出来的内容:
int main()
{
int a = 2, b = 2 , c = 2 ;
if ((a == b) && (a == c ))
{
printf ("(a == b) && (a == c ) is true") ;
}
if ((a == b == c))
{
printf ("(a == b == c) is true") ;
}
return 0 ;
}
它将打印
(a == b) && (a == c ) is true
因为(a == b == c)
是这样计算的
1. (a == b) == c
2. (2 == 2) == 2
3. 1 == 2
4. false
关于3幅图像之间的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26459921/