2011-07-04 94 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

沒錯,但如果你留下這個如果([txtOperator.text isEqualToString:@ 「+」]!){ INT總和= A + B; [result setText:[NSString stringWithFormat:@「%d」,sum]]; }它確實添加了數字。根據我的理解,它不應該。 – BanzaiTokyo

1

這是一個C運算符,只是意思是「不」。所以!YES == NO和!NO == YES都是真實的陳述。例如,if (![txtOperator.text isEqualToString: @"+"])會檢查txtOperator.text是否等於@「+」。

+0

正如我在之前的評論中所寫的那樣,當它不應該的時候,它實際上會添加NOT操作符。 – BanzaiTokyo

+0

正如上面的評論指出的那樣,你的邏輯是「向後」的。 '如果(!thisValueIsFalse){ //這裏的代碼將會執行 }所以你的第一個if語句只有在txtOperator.text不是(!)@「+」時纔會執行,顯然不是正確的行爲。 !代碼中不需要! –

0

大家都提到只是一個NOT運算符,我相信可能會讓您困惑的是括號[] Objective C來自一種叫做小談話的語言,它使用發送消息的方法來處理對象,括號是用於發送該消息。這些消息是真正的功能。

+0

括號實際上或多或少都很清晰,不過謝謝你! – BanzaiTokyo

1

如果總是添加,那麼你的字符串是從來沒有「+」。

因爲你擁有它總是會增加A + B,除非txtOperator.txt正好等於@「+」的邏輯。

有趣的是,如果你沒有傳遞,再加上它總是減,只有在前兩種情況下都不會被擊中,因爲如果第一個是不正確的第二個總是會。

基本上採取了所有的「!」 ......

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