【问题标题】: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 都是真的。

标签: c if-statement logic conditional-statements


【解决方案1】:

没有零不小于零,i &lt;= 0 变为 1 因为零小于或等于零。

【讨论】:

    【解决方案2】:

    如果左侧小于或等于到右侧,&lt;=(“小于或等于”)运算符将返回 true。因为0当然等于0,所以这个表达式将计算为true,这将导致代码进入while循环,将true分配给leftsmaller

    【讨论】:

      【解决方案3】:

      当然零不小于零,但i &lt;= 0 变成1 因为零小于或等于零。

      【讨论】:

        【解决方案4】:

        从未提及i 的变量类型。

        如果是unsigned i,那么测试的&lt; 0 部分将失败。

        如果是float i,那么测试的== 0 部分可能会失败——即使你可以发誓i 应该是0,因为可以存储不精确的值。

        【讨论】:

        • 虽然这在技术上是正确的,但在分配 i = 0; 之后,测试 i==0 始终为真,即使使用浮点变量也是如此。
        猜你喜欢
        • 2017-07-20
        • 1970-01-01
        • 1970-01-01
        • 2011-12-19
        • 1970-01-01
        • 2016-07-02
        • 2011-07-16
        • 2011-04-18
        相关资源
        最近更新 更多