Почему эта логика работает в моем основном цикле, а не в методе? - PullRequest
0 голосов
/ 21 декабря 2018

Я написал это как заполнитель, зная, что это удивительная работа:

While(true)
    if (red > 1.0f)
        redinc = -0.01f;
    if (red < 0.0f)
        redinc = 0.01f;
    red += redinc;

Это внутри моего основного цикла, и я понятия не имею, почему, но это работает, красный идет от 0 до1 .Но потом, при перемещении кода в метод

void Move(float& a) {
    float ainc;
    if (a > 0.7f)
        ainc = -0.05f;
    if (a < -0.7f)
        ainc = 0.05f;
    a += ainc;

, это все равно.Он делает именно то, что я ожидал, во-первых, идет 0,7 - 0,65 - 0,7.

Кто-нибудь сталкивался с этим раньше?Почему это работает в первую очередь?

1 Ответ

0 голосов
/ 21 декабря 2018

Если a находится между -0.7 и +0.7, ainc объявляется, но никогда не инициализируется, так что вы в основном будете добавлять случайное число к a, в худшем случае иметь случайный сбой.

В основном цикле redinc сохраняет последнее присвоенное ему значение, поскольку оно находится в области действия всего цикла, поэтому оно будет работать.

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