левый операнд должен иметь значение l - PullRequest
0 голосов
/ 02 ноября 2011

может кто-нибудь помочь.получить ошибку с этими 2 строками кода.num_red - count_red = red_pot;// all defined as 0 и

while (count_red = 0 && count_yellow = 0 && count_green = 0 && count_brown = 0 && count_blue = 0 && count_pink = 0)
        {
            if (count_black = 0)
            {
                score = score + 7;
                printf("Score: %d\n", score);
                num_balls = num_balls - 1;
            }

        }

1 Ответ

5 голосов
/ 02 ноября 2011

Если это C-подобный язык, вам нужно использовать == для проверки равенства, а не =.Одиночный = предназначен для назначения , поэтому:

int seven = 7;
int five = 5;
if (seven - five == 2) ...

в порядке, но:

int seven = 7;
int five = 5;
if (seven - five = 2) ...

будет, даже если он компилируется, не делать то, чтовы ожидаете.

У вас есть классический пример в вашем коде.Сегмент:

if (count_black = 0) blah;

будет не выполнять blah, когда count_black равен нулю. установит count_black на ноль и будет постоянно отказываться выполнять blah, поскольку результат count_blah = 0 равен 0 (ложь).


Если вы хотитеравенство:

num_red - count_red == red_pot

, чтобы быть правдой, вам нужно назначить одну из этих переменных («неизвестную») на основе двух других «известных».Например, если известны num_red и count_red, установите red_pot с помощью:

red_pot = num_red - count_red;

В качестве альтернативы, если известны red_pot и count_red, установите num_red с помощью:

num_red = count_red + red_pot;
...