为什么具有逻辑NOT的行仍然执行YES会做什么?

Ban*_*kyo -3 iphone objective-c

可能重复:
目标C中的感叹号在"if(![")中的含义是什么

在我之前的问题中,我不太清楚.令我困惑的是为什么在这一行:

   if (![txtOperator.text isEqualToString: @"+"]) {
        int sum=a+b;
        [result setText: [NSString stringWithFormat:@"%d", sum]];

    } 
Run Code Online (Sandbox Code Playgroud)

添加操作数并显示结果,即使使用NOT运算符也不应该发生这种情况,当我添加以下行时,计算器继续添加只是无论你放在那里的运算符都无关紧要.

else if (![txtOperator.text isEqualToString: @"-"]) {
        int sum=a-b;
        [result setText: [NSString stringWithFormat:@"%d", sum]];
    }
    else if  (![txtOperator.text isEqualToString: @"/"]) {
        int sum=a/b;
        [result setText: [NSString stringWithFormat:@"%d", sum]];

    }
    else if  (![txtOperator.text isEqualToString: @"*"]) {
        int sum=a * b;
        [result setText: [NSString stringWithFormat:@"%d", sum]];


    }
Run Code Online (Sandbox Code Playgroud)

0x9*_*x90 5

让我们来看看你在做什么:

[txtOperator.text isEqualToString: @"-"]
Run Code Online (Sandbox Code Playgroud)

你正在检查是否txtOperator.text等于@" - ".

如果是的话-,它会回来YES.

否则NO.

然后你否定这句话:

![txtOperator.text isEqualToString: @"-"]
Run Code Online (Sandbox Code Playgroud)

现在一切都-不会回归YES.

只有-意志才会回归NO.

因此,在您的示例中,if-clause在每种情况下都会输入,但是在字符串匹配时.要检查字符串匹配,请忽略NOT运算符.

  • @Sidyll - >是时候在地下室打开那瓶香槟了.;) (2认同)