【问题标题】:How did this output come from this program?这个输出是如何来自这个程序的?
【发布时间】:2019-08-02 02:52:51
【问题描述】:

stackoverflow 社区的专业程序员您好,我还是个初学者,需要帮助理解以下问题:

int main()
{
    int x=4,y=0;
    while(x>=0)
    {
        if(x==y)
            break;
        else
            printf("\n%d%d",x,y);
        x--;
        y++;
    }
}

输出 40 和 31 的方式和原因,在此先感谢

【问题讨论】:

  • 请将代码发布为文本,而不是文本图片,并且不是指向文本图片的链接。只需在此处复制并粘贴代码,以便其他人也可以这样做来重现您的问题。
  • 另外,问“为什么这是输出”太宽泛了。你到底对什么感到困惑?你期望输出是什么,为什么?
  • 好的,谢谢,现在知道了。几分钟前才加入,无需撕毁我:p
  • 我建议您阅读How To Ask,这样您以后可以提出更好的问题。
  • 实际上,像这样的简单程序的问题可以通过使用调试器检查程序流程和变量来回答,甚至可以通过在循环开头添加printf("x=%d, y=%d\n", x, y);来回答,当答案很明显。

标签: c post-increment decrement


【解决方案1】:

X 将从 4 开始,Y 从 0 开始。由于它们不相等,程序将打印这些值。第二次迭代的 X 为 3,Y 为 1。程序将再次打印它们。在第三次迭代中,X 和 Y 都是 2,因此程序将退出循环并且不会打印。

【讨论】:

    【解决方案2】:

    为了更好地理解程序为什么会输出您没有预料到的内容,请尝试通过使用 printf 并了解您想要打印的每个值来找出原因。

    例如,您可以尝试以下操作:

    int main()
    {
        int x=4,y=0;
        while(x>=0)
        {
            if(x==y)
                break;
            else
                printf("x is: %d\n", x);
                printf("y is: %d\n", y);
            x--;
            y++;
        }
    }
    

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      你的程序只打印两次,循环三次。

      在第一次运行时,它会打印 40,因为 X=4 和 Y=0。然后 X 递减 (x--) 和 Y 递增 (y++)。 X 现在是 3,Y 现在是 1。

      在第二次运行时,它会打印 31,因为 X=3 和 Y=1。然后 X 再次递减 (x--) 并且 Y 再次递增 (y++)。 X 现在是 2,Y 现在是 2。

      在第三次运行时,程序因 X=2 和 Y=2 而中断。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-14
        • 1970-01-01
        • 1970-01-01
        • 2021-03-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-16
        相关资源
        最近更新 更多