Подтвердить что ты не робот

Почему этот цикл работает бесконечно

Это простой цикл while в С#, но он работает бесконечно.

int count = 1;
while (count < 10)
{
    count = count++;
}

Почему это так?

4b9b3361

Ответ 1

Это будет контур бесконечно.

Существует два типа приращения переменной:

Здесь count++ и ++count оба варианта, если вы использовали ++count, он будет работать.

Здесь count = count++ означает, что переменная count будет увеличена на единицу, а затем присваивает более раннее значение 1 самой переменной count, поэтому счетчик остается неизменным.

Ответ 2

Выражение count++ возвращает исходное значение count, а затем увеличивает значение.

Итак, вы каждый раз переписываете счет с одинаковым значением. Просто сделайте следующее:

count++;

Для любопытных, здесь ссылка на статью Эрика Липперта, которая различает приоритет оператора и порядок оценки - это интересно прочитать:

http://blogs.msdn.com/b/ericlippert/archive/2009/08/10/precedence-vs-order-redux.aspx

Ответ 3

count = count++; не увеличивает count на единицу. x++ - оператор post increment, что означает, что значение, возвращаемое выражением, является старым значением. Таким образом, в вашем коде происходит следующее:

int oldValue = count;
count = count + 1;
count = oldValue;

То, что вы, вероятно, хотели написать, было count++; (без "count =" ).

Подробнее об этом можно узнать в следующем вопросе SO:

Ответ 4

Оператор ++ сначала сохраняет текущее значение, затем увеличивает и, наконец, возвращает сохраненное значение, поэтому count никогда не изменится.

Eiter использует оператор ++ или выполняет задание. Все они эквивалентны:

count++;
count += 1;
count = count + 1;

Ответ 5

count  = count++;

Это шаг за шагом. Он делает следующее.

int temp = count;
count++;
count = temp;

Итак, вы не увеличиваете счет. Вместо этого используйте следующее:

while (count  < 10)
{
    ++count;
}

Ответ 6

потому что

count++

возвращает count, а не count + 1

просто имеет счетчик ++ без назначения или:

count = ++count;

последний только для объяснения, но вы не должны его использовать...

from: ++ Operator (ссылка С#)

Первая форма - операция приращения префикса. Результат операция - это значение операнда после того, как он был увеличен.

Вторая форма - операция приращения постфикса. Результат операция - это значение операнда до того, как он будет увеличен.

Числовые и перечисляемые типы имеют предопределенные операторы приращения. Пользовательские типы могут перегружать оператор ++. Операции по интегральные типы, как правило, допускаются при перечислении.

Ответ 7

Это бесконечно, потому что вы на самом деле не увеличиваете счет.

count = count ++; присваивает значение 1 для подсчета, а затем увеличивает счетчик, но поскольку вы не назначаете счет увеличенного значения, он никогда не увеличивается.

Вам нужно сделать следующее:

count++;

или

count = ++count;

Ответ 8

Позвольте мне задать вам вопрос, почему вы делаете две операции над одной переменной, в то время как одного достаточно? Каковы были ваши намерения? count ++ сам был достаточно, так зачем снова присваивать счет. Может быть, вы хотите сделать что-то еще. У вас может быть только счет ++, или ++ count или count + 1. Я думаю, что другие способы приводят к двум операциям. Извините за мой способ написания.