我想知道里面的感叹号是什么if(!anObject)
意思。
7 回答
它是布尔 NOT 运算符,也称为否定。
!true == false;
!false == true;
那是逻辑非运算符,即if( thisThisIsNotTrue ) { doStuff }
.
如果它总是添加,那么你的字符串永远不会是“+”。
除非 txtOperator.txt 完全等于 @"+",否则您所拥有的逻辑将始终添加 a+b。
有趣的是,如果你确实通过了一个加号,它总是会减去,只有前两个案例会被击中,因为如果第一个不是真的,第二个总是会是。
基本上,去掉所有的“!”......
它是一个 C 运算符,仅表示“不是”。所以 !YES == NO 和 !NO == YES 都是正确的陈述。if (![txtOperator.text isEqualToString: @"+"])
,例如,检查 txtOperator.text 是否不等于 @"+"。
正如每个人都提到的只是一个 NOT 运算符,我相信可能会让你感到困惑的是括号 [],Objective C,来自一种叫做 smalltalk 的语言,它使用发送消息的方法来发送对象,括号用于发送那个信息。消息实际上是函数。
你不应该添加“!” 到“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"];
那么它在这样的语句中的使用呢(取自在线课程示例):
(在这个例子中,一个按钮被按下并且在点击该按钮时,下面的代码在默认状态和选择状态之间“切换”):
- (IBAction)flipCard:(UIButton *)sender
{
sender.selected = !sender.isSelected;
}