Как этот вывод пришел из этой программы? - PullRequest
0 голосов
/ 11 марта 2019

Здравствуйте, профессиональные программисты сообщества 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, заранее спасибо

Ответы [ 3 ]

3 голосов
/ 11 марта 2019

X начнется с 4, а Y - с 0. Поскольку они не равны, программа напечатает эти значения. Вторая итерация имеет X в 3 и Y в 1. Снова программа напечатает их. На третьей итерации X и Y равны 2, и поэтому программа выйдет из цикла и не напечатает.

1 голос
/ 11 марта 2019

Чтобы лучше понять, почему программа выводит то, чего вы не ожидали, попробуйте найти причину, поиграв с 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++;
    }
}

Надеюсь, это поможет

0 голосов
/ 12 марта 2019

Ваша программа печатает только дважды и повторяет три раза.

При первом запуске печатается 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...