【问题标题】:What output does the following for statement produce in C?以下 for 语句在 C 中产生什么输出?
【发布时间】:2015-03-04 02:48:00
【问题描述】:

我预计它会产生:

10 5 3 2 1

但它会打印

10 5 3 2 1 1 1 1 1 1 1 1 1...

为什么?

#include <stdio.h>

int main(void)
{
    int i;

    for(i = 10; i >= 1; i /= 2)
        printf("%d ", i++);

    return 0;
}

打印 2,然后加 1 为 3,除以 2 为 1。由于 1 等于 1,打印 1,然后加 1 为 2,除以 2 为 0。因为 0 小于大于 1,循环应该结束。

【问题讨论】:

  • 2 除以 2 是 1,而不是 0。
  • 尝试调试程序。

标签: c loops for-loop indefinite


【解决方案1】:

i 为1 时,您使用printf 语句打印它。然后i 递增(通过printf 语句中的++ 运算符)。然后执行i /= 2,结果为i = 2 / 2,结果为1。这满足您的条件i &gt;= 1,使其成为无限循环。

【讨论】:

    【解决方案2】:

    i /= 2 变为1 时,循环体将打印1 并将i 增加1。这将永远不会让i /= 2 的值小于1,因此i 的值将无限循环。

    【讨论】:

      【解决方案3】:

      i 不断递增到 2 并除以 2,从而产生无限循环。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多