2014-04-04 226 views
4

我在閱讀參考書中的代碼時遇到了包含驚歎號和整數的問題。使用感嘆號'!'在C

讓我們說,我已經聲明整型變量命名編號 - int number = 0;

然後我用了一段時間的功能包括一個感嘆號和number

while(!number) 
{ 
    ... 
} 

我很困惑這一點,因爲我不知道!number是什麼意思,可能會返回結果?我不確定這是否可以使用,但正如我所說,我在我的書中看到了它。

因此,如果有人能告訴我這將是很好!number是什麼意思,它是什麼評估?

在此先感謝您。

+1

不。 (如果'number'爲零,否則爲真。)任何C參考應該告訴你... – DevSolar

+0

@DevSolar但我認爲'!'只能用於類似於:while(number!= 8) –

+1

'while(!Number)'相當於說'while(Number == 0)' –

回答

7

我們可以把!視爲不是。 因此,如果數字不爲零(+ ve或-Ve),它將返回零。 如果爲零,則返回1

int i = 13; 
printf("i = %d, !i = %d\n", i, !i); 
printf("!0 = %d\n", !(0)); 
+0

非常感謝你的例子,它使我在運行時更加清晰。 –

4

這是否定或「不」操作符。在實踐中!數字的意思是「如果數字== 0則爲true,否則爲false」。谷歌「一元運營商」瞭解更多信息。

+0

所以,每當我使用它,真的總是意味着等於0? –

+1

當數字等於0時,是(!數字)的計算結果爲真,這是重述與上述相同的規則。 – RobP

5

在C,!數將評估爲1,如果數量==如果數字!= 0,而在C,1是真,0是0和0假。

使用類似數字== 0的顯式比較具有相同的效果,但您可能會發現它更易於閱讀。

+0

非常感謝你 –

+3

「更容易閱讀」,我不同意。只有當你幾乎什麼都不知道C. –

+0

我想「更容易閱讀」確實是主觀的,所以我會改變我的短語 – TheWalkingCube

1

它用於否定數字。它是一個一元運算符。

例如: -

如果我們使用它與零: - 0,那麼它會成爲1

與一個1 = 0

0

反運算符)只是簡單地顛倒了它的操作數的含義。

操作數或表達式必須是算術或指針類型。但是表達式的操作數/結果被隱式轉換爲數據類型bool(boolean 0表示false,非零表示True)。

如果轉換的操作數爲假,結果爲true;如果轉換的操作數爲true,則結果爲false。結果是bool類型。

所以

while(!number) 
{ 
    ... 
} 

自變量數目爲0,而(!號),即,!0哪個是哪個是 'TRUE' '0否定',則它的代碼進入while循環()

0

如果有人需要: C/C++ => C#

c/c++---> if(i) ---->c# i!=0 
    c/c++---> if(!i) ---->c# i==0 

設說 INT I = 1; C代碼

if(1) 
{ 
    //your code 
} 

C#代碼

if(1!=0) 
{ 
    //your code 
}