回答
是的,两种说法都不同任何区别。 !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