回答
是的,兩種說法都不同任何區別。 !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. return;返回true並返回false - 有什麼區別?
- 3. 錯誤:語法錯誤,無法識別的表達式:#F-R33 ^:^ F-BC12 ^:^ F-N10
- 4. 「margin:0 auto」是否有區別?和「margin:auto;」
- 5. 如果在編譯/反編譯後返回null if {return}
- 6. 返回與否有什麼區別?
- 7. 使用return語句有什麼區別?
- 8. 如果SELECT返回0行,INSERT OVERWRITE是否創建新的空分區
- 9. (0 <0)是否返回true?
- 10. EIP和Return Adress有什麼區別?
- 11. if(intVar)和if(intVar!= 0)之間有區別嗎?
- 12. Sender,From和Return-Path有什麼區別?
- 13. 如果返回0,則檢查值否則返回值
- 14. 直接聲明和初始化返回碼是否有區別?
- 15. 如果爲空返回0
- 16. document.write和return語句有什麼區別?
- 17. 爲什麼我們使用if,否則如果不是多個if塊如果主體是return語句
- 18. 這兩個代碼是否有區別?
- 19. PHP代碼回聲不返回「0」,如果沒有結果
- 20. C#中的「yield」和「yield return」之間有什麼區別(如果有的話)?
- 21. if(this.isSimulation)return;
- 22. PHP if/else返回和回顯之間的區別?
- 23. 如果賦值返回null,是否有辦法強制變量爲0?
- 24. MYSQL SELECT SUM()BY DATE IF NO MATCH RETURN 0
- 25. //和m //是否有區別?
- 26. Mysqli結果總是返回0
- 27. `return iterator`和`iterator`產生的區別
- 28. document.getElementsByTagName('head')[0]是否可以返回null?
- 29. MySQL的返回結果,如果0行返回
- 30. 如何識別mysqli_stmt_fetch返回0
這甚至應該做什麼?爲什麼不使用'if(abs(n)<10)'? – Paul
@paul考慮'if(abs(INT_MIN)<10)'vs'(n/10 == 0)'。第二個是明確的。 – chux
@chux我不確定極端邊緣情況是否值得基本混淆代碼的目的。 – Paul