零是不是小于或等于零? [关闭]
Posted
技术标签:
【中文标题】零是不是小于或等于零? [关闭]【英文标题】:Is Zero less than or equal to zero? [closed]零是否小于或等于零? [关闭] 【发布时间】:2016-04-06 01:19:22 【问题描述】:假设我得到一个值i=0;
那么下面的变量leftsmaller
会是true
吗?
while(i<=0 || arr[i]<arr[j])
leftsmaller = true;
【问题讨论】:
0 你为什么不试试上面有i = 0
的代码?
@Quill-HATMANIAC 只是尝试一些你不确定的东西,可能会调用 UB,所以你不能确定其他编译器是否做同样的事情。
@Monty 顺便说一句,您是否意识到,由于条件中的所有变量都没有改变值,所以如果 i
什么?甚至0 == -0
都是真的。
【参考方案1】:
没有零不小于零,i <= 0
变为 1
因为零小于或等于零。
【讨论】:
【参考方案2】:如果左侧小于或等于到右侧,<=
(“小于或等于”)运算符将返回 true
。因为0
当然等于0
,所以这个表达式将计算为true
,这将导致代码进入while
循环,将true
分配给leftsmaller
。
【讨论】:
【参考方案3】:当然零不小于零,但i <= 0
变成1
因为零小于或等于零。
【讨论】:
【参考方案4】:从未提及i
的变量类型。
如果是unsigned i
,那么测试的< 0
部分将失败。
如果是float i
,那么测试的== 0
部分可能会失败——即使你可以发誓i
应该是0
,因为可以存储不精确的值。
【讨论】:
虽然这在技术上是正确的,但在分配i = 0;
之后,测试 i==0
始终为真,即使使用浮点变量也是如此。以上是关于零是不是小于或等于零? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
插入时出错...索引(从零开始)必须大于或等于零且小于参数列表的大小
插入数组列表时,索引(从零开始)必须大于或等于零且小于参数列表的大小
索引(从零开始)必须大于或等于零且小于参数列表的大小。 - 字符串.格式