【问题标题】:beginner C "==" always evaluates to false初学者 C "==" 总是评估为 false
【发布时间】:2023-03-29 04:34:01
【问题描述】:

只是一个初学者问题。我试图找到这个问题的答案,但我找不到。

为什么

for (int i = 0;i==10;++i) {
/* body of the for loop */
}

从不执行 for 循环的主体?但是这个有用吗?

for (int i = 0;i<=10;++i) {
/* body of the for loop */
}

(i==0) 应该是一个布尔表达式,如果 i==0,则计算结果为 false,对吗? 如果我将该表达式放在像

这样的 if 语句中,这将非常有效
for(int i=10;;++i) {
if (i==10) break;
}

谢谢!

【问题讨论】:

  • 它只需要计算一次 false 就可以停止循环。

标签: c++ c for-loop conditional conditional-statements


【解决方案1】:

C++ 101:中间条件必须为真,循环才能继续。

【讨论】:

    【解决方案2】:

    for循环基本上意味着只要中间条件为真就继续。

    所以循环,在这种情况下,只会在 i==10 时继续。它不是因此它停止。

    【讨论】:

      【解决方案3】:
      for (int i = 0; <condition>;++i) {
      /* body of the for loop */
      }
      

      理解这一点的关键是每次 条件 评估为 TRUE 时都会执行主体。在您的示例中,它本身第一次评估为 FALSE,因此没有执行任何操作。

      在您的第二个示例中,省略了 condition。这意味着身体永远执行,直到你摆脱它。当 i == 10 时,您会执行此操作。因此,主体执行 10 次。

      【讨论】:

      • 您的答案与 Aidan 的问题相同。你的措辞具有误导性。它不是“每次……”,因为如果是这样,提问者的循环每次x == 10 都会起作用。更准确地说,循环运行“只要”或“while”条件为true
      • 谢谢!很详细的解释!
      【解决方案4】:

      for(;true;)
      {
      //this is infinite loop
      }

      条件必须为真才能进入循环, 在你的情况下 i==10 返回 false 因此它不会进入循环。

      【讨论】:

        【解决方案5】:
                for (int i = 0;i==10;++i) {
                 /* body of the for loop */
                }
        

        对于此代码最初 i=0,当检查条件 (i==10) 时,结果为 false,因此循环不会迭代。

        仔细检查你想要运行循环的 i 值。

        例如你的循环可能是

             for (int i = 0;i<=10;++i) {
               /* body of the for loop */
              }
        

        循环体将从 0 迭代到 10,包括两者。

        【讨论】:

          【解决方案6】:

          因为您的第一个循环中的条件仅在 i 等于 10 时才增加。您将 i 设置为 0,因此它永远不会增加,因为它无法到达那里。

          第二个有效,因为你说i等于0,而i小于或等于10,它增加1。0小于10,但不等于它。

          【讨论】:

            猜你喜欢
            • 2017-01-09
            • 2015-03-15
            • 1970-01-01
            • 2016-04-11
            • 2016-10-03
            • 1970-01-01
            • 2015-03-22
            • 2023-03-24
            • 2012-09-11
            相关资源
            最近更新 更多