感嘆符のif(!anObject)
意味が気になります。
7 に答える
これは、否定とも呼ばれるブール型の NOT 演算子です。
!true == false;
!false == true;
それが論理否定演算子、つまり ですif( thisThisIsNotTrue ) { doStuff }
。
常に追加する場合、文字列は決して「+」ではありません。
txtOperator.txt が @"+" と正確に等しい場合を除き、ロジックは常に a+b を追加します。
興味深いことに、プラスを渡した場合、常に減算されます。最初の 2 つのケースのみがヒットします。
基本的には「!」をすべて外して……。
これは C 演算子であり、単に「ない」という意味です。したがって、!YES == NO と !NO == YES はどちらも真のステートメントです。if (![txtOperator.text isEqualToString: @"+"])
たとえば、txtOperator.text が @"+" と等しくないかどうかを確認します。
誰もが言及しているように、それは単なる NOT 演算子です。私があなたを混乱させていると思われるのは、ブラケット [] です。Objective C は、オブジェクトへのメッセージ送信アプローチを使用する small talk と呼ばれる言語に由来し、ブラケットはそれを送信するために使用されます。メッセージ。メッセージは実際には関数です。
では、次のようなステートメントでの使用はどうでしょうか (オンライン クラスの例から引用)。
(この例では、ボタンが押され、ボタンをクリックすると、以下のコードがデフォルト状態と選択状態の間で「トグル」します):
- (IBAction)flipCard:(UIButton *)sender
{
sender.selected = !sender.isSelected;
}
「!」を追加しないでください。「if」の条件の開始まで。あなたのコードは、演算子のテキストが + でない場合は追加するなどと言っています。コードは次のようになります。
-(IBAction) 計算結果 {
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"];