2013-06-04 14 views
3

我正在接受一本書的挑戰,它要求我創建一個從20減爲0的循環,並讓我爲每個數字打印一條消息。然而,它要求我打印出一個特殊的消息每個號碼由5整除我所看到的某些例子包括這一個:爲什麼不能直接在if語句中使用模運算的結果?

if (number%5==0) 
{ 
    //your code here 
} 

我得到了模在做,但爲什麼這段代碼有==0後它?例如,爲什麼不只是這樣的代碼它:

if (number%5) 
{ 
    //your code here 
} 
+0

if語句中的條件必須爲真。因此,「數字%5」必須等於0. –

回答

3

由於number%5爲0和4之間的整數,而number%5==0是一個布爾值。與C/C++等整數可以被視爲布爾值的語言(例如0 - > false,1 - > true)類似,在C#中,if的條件必須是「真實」布爾值。 (即使C#讓你在if條件中使用一個整數,你對代碼的建議改變也是不正確的。如果數字%5是0,前面的代碼將運行你的代碼,後面的代碼將運行你的代碼,如果數量5%不爲0)

編輯:由於埃裏克利珀在評論中說,要在if條件下使用bool的替代方法是使用的東西,實現implicit operator bool爲鑄造或實現運營商truefalse,如http://msdn.microsoft.com/en-us/library/6x6y6z4d.aspx。但據我所知,除了bool之外,沒有任何原始單元滿足這兩個要求。

+0

我相信設計決定是爲了解決您確定的問題(即不正確的邏輯)。 – Matthew

+0

@Mthethew我認爲另一個問題是,在整數被認爲是bools的系統中,所有非零值都爲True,零值爲False。所以你可以有一個boolan評估爲True的值,比如2)然後做2 == True並驚訝地發現你會得到False! – Patashu

+0

這是一個很好的觀點。 – Matthew

相關問題