Что означает восклицательный знак в операторе Objective-C if? - PullRequest
2 голосов
/ 05 июля 2011

Мне интересно, что означает восклицательный знак в if(!anObject).

Ответы [ 7 ]

9 голосов
/ 05 июля 2011

Это логический оператор НЕ, также называемый отрицанием.

!true == false;
!false == true;
2 голосов
/ 05 июля 2011

Это оператор Logical NOT , т. Е. if( thisThisIsNotTrue ) { doStuff }.

1 голос
/ 05 июля 2011

Если он всегда добавляет, тогда ваша строка никогда не будет "+".

Логика, которая у вас есть, всегда будет добавлять + b, если txtOperator.txt точно не равен @ "+".

Интересно, что если вы передадите плюс, он всегда будет вычитаться, только первые два случая будут поражены, потому что, если первый неверен, второй всегда будет.

По сути, уберите все"!" ....

1 голос
/ 05 июля 2011

Это оператор C, просто означающий «нет».Так что! ДА == НЕТ и! НЕТ == ДА оба являются истинными утверждениями.if (![txtOperator.text isEqualToString: @"+"]), например, проверяет, не равен ли txtOperator.text @ "+".

0 голосов
/ 14 февраля 2013

Так что насчет его использования в таком утверждении (взято из примера онлайн-класса):

(В этом примере нажата кнопка, и после нажатия кнопки код ниже "переключает "между состоянием по умолчанию и выбранным состоянием):

- (IBAction)flipCard:(UIButton *)sender
{
    sender.selected = !sender.isSelected;
}
0 голосов
/ 05 июля 2011

Вы не должны добавлять "!" к началу условия в «если». Ваш код говорит, что если текст оператора не +, то добавить и так далее. Ваш код должен быть таким:

- (IBAction) calcResult {

a = [txtOperand1.text intValue];
b = [txtOperand2.text intValue];

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]];

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


}
else [result setText:@"nothing"]; 
0 голосов
/ 05 июля 2011

Поскольку все упоминают, что это просто оператор NOT, я думаю, что вас смутило то, что скобки [], Objective C, взяты из языка, называемого small talk, в котором используется подход отправки сообщений к объектам, используются скобки.отправить это сообщение.Сообщения действительно являются функциями.

...