回答
是的,兩種說法都不同任何區別。 !n/10
相當於(!n)/10
,n/10 == 0
相當於!(n/10)
。
運營商!
優先於/
運營商的優先級,因此n
將首先綁定到!
!n/10
。
正如@Kerrek SB在他的評論中指出,!n
將評估要麼0
或1
所以,表達永遠是false
。
算術轉換後''(!n)'是0或1,所以表達式總是爲false。 –
你在問這個,因爲也許你不清楚如果聲明是如何工作的。所以,讓我先解釋一下。 如果語句的語法是 如果(表達式) {過程遵循}
這裏表達中使用應該是邏輯一,它應導致真或假。只要表達式導致爲真,就會執行if語句,反之亦然。 另一個概念是,如果表達式將導致0(false),那麼if語句將不會被執行。 現在當你使用if(n/10)時,對於n = 123,n/10將導致12(語句使用整數,因此結果)。由於它不是0,它被視爲一個真實的,if語句將執行並且n將根據您的代碼返回。現在n/10不會改變n,因此n(= 123)將被返回並打印。 現在我們來看看if(n/10 == 0)。當n = 123時,n/10第一次將是12,這不等於0.所以,這裏產生一個錯誤,if語句不會像前一個那樣執行。 根據你想要的邏輯,你應該使用if(n/10 == 0)。
謝謝你,我明白了 –
此語句
if (!n/10)
return;
相當於
if ((!n)/10)
return;
按照operatpr的描述(6.5.3.3目算術運算符)
5邏輯的結果否定操作符!如果 的操作數不等於0,則其值爲0,如果其操作數 的值等於0,則值爲1.結果的類型爲int。表達式E是等於(0 == E)的 。
因此,如果n等於0,那麼表達(!n)/10
等於表達1/10
並且隨着兩個操作數都是整數,則結果等於0
如果n不等於0,那麼表達(!n)/10
等於到0/10
,其結果再次等於0。
所以原始表達式相當於
if (0) return;
這意味着return語句將永遠不會被執行。
至於第二條語句
if (n/10 == 0)
return;
當n小於10,則導致的n/10
(其中,n爲整數)將等於0,你會得到
if (0 == 0) return;
所以當n
小於10
時,第二個if語句中的return語句將被執行。
- 1. 遞歸。 return func()和if(func())返回true有什麼區別?
- 2. 「if(systemReady == false)return」的區別是什麼?和「if(!systemReady)return」在CPU
- 3. if $ str =「」和if($ str)是否有區別?
- 4. return;返回true並返回false - 有什麼區別?
- 5. 「return 0」和「exit(0)」之間的區別
- 6. Getters:區別「return firstName.get();」和「返回firstName;」
- 7. 錯誤:語法錯誤,無法識別的表達式:#F-R33 ^:^ F-BC12 ^:^ F-N10
- 8. 「margin:0 auto」是否有區別?和「margin:auto;」
- 9. 返回與否有什麼區別?
- 10. 如果在編譯/反編譯後返回null if {return}
- 11. 使用return語句有什麼區別?
- 12. `return line,```return line`之間的區別
- 13. 「#if Foo - 0 == 0」和「#if defined(Foo)&& Foo == 0」之間的區別是什麼?
- 14. if(!$ array)和if(empty($ array))之間是否有區別
- 15. jQuery使用return!1或返回0
- 16. 如果SELECT返回0行,INSERT OVERWRITE是否創建新的空分區
- 17. (0 <0)是否返回true?
- 18. EIP和Return Adress有什麼區別?
- 19. Sender,From和Return-Path有什麼區別?
- 20. 返回值,如果它是0
- 21. if(intVar)和if(intVar!= 0)之間有區別嗎?
- 22. 如果返回0,則檢查值否則返回值
- 23. 直接聲明和初始化返回碼是否有區別?
- 24. Bash:移動任何名爲n10的目錄的內容向上一級
- 25. If和Else之間的區別如果?
- 26. 如果爲空返回0
- 27. document.write和return語句有什麼區別?
- 28. 「await Task.Run(); return;」之間的任何區別和「返回Task.Run()」?
- 29. 返回-1和〜0的函數有很大的區別嗎?
- 30. 如果語句不能識別mysql_num_rows何時返回0結果
這甚至應該做什麼?爲什麼不使用'if(abs(n)<10)'? – Paul
@paul考慮'if(abs(INT_MIN)<10)'vs'(n/10 == 0)'。第二個是明確的。 – chux
@chux我不確定極端邊緣情況是否值得基本混淆代碼的目的。 – Paul