=是什么意思!在目标c

时间:2013-07-30 00:13:42

标签: objective-c

!=在大多数语言中意味着不相等 但是怎么样=!在目标C?我在下面的代码片段中找到了这个 感谢

- (void) toggleButton: (UIButton *) aButton
{
    if ((_isOn = !_isOn))
    {
        [self setBackgroundImage:BASEGREEN forState:UIControlStateNormal];
        [self setBackgroundImage:PUSHGREEN forState:UIControlStateHighlighted];
        [self setTitle:@"On" forState:UIControlStateNormal];
        [self setTitle:@"On" forState:UIControlStateHighlighted];
    }
    else
    {
        [self setBackgroundImage:BASERED forState:UIControlStateNormal];
        [self setBackgroundImage:PUSHRED forState:UIControlStateHighlighted];
        [self setTitle:@"Off" forState:UIControlStateNormal];
        [self setTitle:@"Off" forState:UIControlStateHighlighted];
    }

    [self relaxButton:self];
}

3 个答案:

答案 0 :(得分:7)

A =!B基本上是一个布尔说“将A设置为与B相反”。

例如,你可以这样做:

BOOL a = NO;
BOOL b = !a;

和b将为YES

您的代码行基本上是在翻转BOOL is_On的状态,然后如果新状态为YES则执行if语句块,否则正在执行else块。

答案 1 :(得分:1)

!是基本的布尔运算符之一。与||&&一起,!用于处理布尔值。因为布尔值只能是真或假,所以布尔运算符很容易理解。

1)not运算符(!)用于反转布尔变量的状态。真实变为虚假而虚假变为真实。

 BOOL a = NO;
 a = !a;
 if (a) {
 ...
 // will execute because a is now YES, or true
 }

2)和运算符(&&)用于两个布尔值。如果要比较的两个值都为真,则返回true。如果要比较的任何值为false,则返回false

BOOL a = NO;
BOOL b = YES;
if (a && b) {
...
// will not execute because NO && YES is NO
}

a = YES;
if (a && b) {
...
// will execute because YES && YES is YES
}

3)或运算符(||)也用于两个布尔变量。如果所讨论的任何一个布尔都是真的,它将返回true。

BOOL a = YES;
BOOL b = NO;
if (a || b) {
...
// will execute because YES || NO is YES
}

在考虑布尔运算符时,真值表是一个有价值的资源

true || true = true
true || false = true
false || true = true
false || false = false

true && true = true
true && false = false
false && true = false
false && false = false

!true = false
!false = true

答案 2 :(得分:0)

你误读了它。它不是_isOn =! _isOn,而是_isOn = !_isOn。请注意=!之间的空格。单个感叹号是逻辑否定,即它切换_isOn的值并将结果分配回_isOn