尽管看起来很简单,但这个c程序的输出对我来说很困惑

时间:2017-03-12 09:46:50

标签: c

#include<stdio.h>
    int main ( )
        {
            int x = 0;
            while ( x <= 10 )
                for ( ; ; )
                    if ( ++x % 10 == 0 )
                    break;
            printf("%d", x);
            return 0;
        }

我知道程序产生什么作为输出,但是在干运行时输出有点令人困惑。你能解释一下吗?

1 个答案:

答案 0 :(得分:1)

它打印20。 我猜你期待0,如果是这样你就错了'++ x'。 无论如何,我会解释实际发生的事情。

          while ( x <= 10 )
            for ( ; ; )
                if ( ++x % 10 == 0 )
                break

在此之前x = 0。它通过'While'然后'for'。 ++ x变为1,如果失败,因为1%10不等于0. x保持递增直到x = 10,现在如果条件满足,则“10%10 == 0”为真,如果条件为真且去打破,来自'for'。

现在x = 10,当“10&lt; = 10”为真时它会通过。它通过'for'。 ++ x变为11,因此如果条件失败,则'11%10 == 0'为假。 x继续增加,直到值为20.当'20%10 == 0时,如果条件为真并且中断,则出现'for'。

现在虽然条件失败,因为'20&lt; = 10'是假的。

节目打印'20'