2011-07-04 21 views
0

if(!anObject)の感嘆符が何を意味しているのだろうかと思います。Objective-C if文で感嘆符の意味は何ですか?

+1

は、NOT演算子を聞いたことがありませんか? – Kal

+5

'!'は論理 'NOT'単項演算子です。実際のコードを書く前に、Objective Cに関する入門書を読むことをお勧めします。 –

+2

これはObjective Cについてのものではなく、すべてのプログラミング言語です。 –

答えて

1

Logical NOTオペレータ、すなわち、if(thisThisIsNotTrue) { doStuff }あります。

+0

ありがとう!それは私が実際に思ったことです - それ! NOT演算子ですが、最初の "if"部分だけを残すと、実際にはそうでなければ実際にオペランドを追加しますか? – BanzaiTokyo

6

否定とも呼ばれる論理NOT演算子です。

!true == false; 
!false == true; 
+0

ええ、これをそのままにしておくと、if(![txtOperator.text isEqualToString:@ "+"]){ int sum = a + b;[結果セットテキスト:[NSString stringWithFormat:@ "%d"、sum]]; }実際には数値が加算されます。私が理解しているところからはどうしてはいけませんか。 – BanzaiTokyo

1

これは単に「not」を意味するC演算子です。だから!YES == NOと!NO == YESはどちらも真のステートメントです。たとえば、if (![txtOperator.text isEqualToString: @"+"])は、txtOperator.textが@ "+"と等しくないかどうかを確認します。

+0

私が前にコメントに書いたように、実際にNOT演算子を追加するのは、それが想定されていないときです。 – BanzaiTokyo

+0

上記のコメントが指摘しているように、あなたのロジックは「後方」です。 'if(!'//コードはここで実行されます}'最初の 'if'文は' txtOperator.text'がNOT(!)@ "+"である場合にのみ実行されますが、明らかに正しい動作ではありません。 !のコードはあなたのコードでは必要ありません。 –

0

誰もがNOT演算子であると私はあなたが混乱している可能性があると信じている[]、Objective Cは、小さなトークと呼ばれる言語から来て、オブジェクトへのメッセージのアプローチを使用します。そのメッセージを送信するために使用されます。メッセージは本当に機能です。

+0

ブラケットは実際には多少はっきりしていますが、とにかくありがとう! – BanzaiTokyo

1

常に追加すると、文字列は決して "+"になりません。

ロジックは、txtOperator.txtが正確に@ "+"に等しくない限り、常に+ bを追加します。あなたはそれが常に引くだろうプラスに合格しなかった場合

興味深いことに、唯一の最初の2例は初めてのようになり、常に二真実ではなかったので、あればヒットすることでしょう。

基本的に、すべての "!" ....

0

あなたは追加しないでくださいを取ります "!" "if"の条件の開始まで。あなたのコードでは、オペレータのテキストが+でなければ、それを追加するなどと言います。あなたのコードはこのようにすべきです。

- (IBAction)calculateResult {

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

ので(オンラインクラスの例から取られた)このような文での使用についてどのような:

(この例では、ボタンが押されましたそして、ボタン、デフォルトの状態と選択状態の間に「トグル」以下のコード)をクリックすると:

- (IBAction)flipCard:(UIButton *)sender 
{ 
    sender.selected = !sender.isSelected; 
} 
+0

Appleのマニュアルを読んだら、isSelectedはBOOLを返すので、次のようになります。 – alejandrormz

関連する問題