Это простой цикл while в С#, но он работает бесконечно.
int count = 1;
while (count < 10)
{
count = count++;
}
Почему это так?
Это простой цикл while в С#, но он работает бесконечно.
int count = 1;
while (count < 10)
{
count = count++;
}
Почему это так?
Это будет контур бесконечно.
Существует два типа приращения переменной:
Здесь count++
и ++count
оба варианта, если вы использовали ++count
, он будет работать.
Здесь count = count++
означает, что переменная count будет увеличена на единицу, а затем присваивает более раннее значение 1 самой переменной count, поэтому счетчик остается неизменным.
Выражение count++
возвращает исходное значение count, а затем увеличивает значение.
Итак, вы каждый раз переписываете счет с одинаковым значением. Просто сделайте следующее:
count++;
Для любопытных, здесь ссылка на статью Эрика Липперта, которая различает приоритет оператора и порядок оценки - это интересно прочитать:
http://blogs.msdn.com/b/ericlippert/archive/2009/08/10/precedence-vs-order-redux.aspx
count = count++;
не увеличивает count
на единицу. x++
- оператор post increment, что означает, что значение, возвращаемое выражением, является старым значением. Таким образом, в вашем коде происходит следующее:
int oldValue = count;
count = count + 1;
count = oldValue;
То, что вы, вероятно, хотели написать, было count++;
(без "count =
" ).
Подробнее об этом можно узнать в следующем вопросе SO:
Оператор ++ сначала сохраняет текущее значение, затем увеличивает и, наконец, возвращает сохраненное значение, поэтому count
никогда не изменится.
Eiter использует оператор ++
или выполняет задание. Все они эквивалентны:
count++;
count += 1;
count = count + 1;
count = count++;
Это шаг за шагом. Он делает следующее.
int temp = count;
count++;
count = temp;
Итак, вы не увеличиваете счет. Вместо этого используйте следующее:
while (count < 10)
{
++count;
}
потому что
count++
возвращает count
, а не count + 1
просто имеет счетчик ++ без назначения или:
count = ++count;
последний только для объяснения, но вы не должны его использовать...
from: ++ Operator (ссылка С#)
Первая форма - операция приращения префикса. Результат операция - это значение операнда после того, как он был увеличен.
Вторая форма - операция приращения постфикса. Результат операция - это значение операнда до того, как он будет увеличен.
Числовые и перечисляемые типы имеют предопределенные операторы приращения. Пользовательские типы могут перегружать оператор ++. Операции по интегральные типы, как правило, допускаются при перечислении.
Это бесконечно, потому что вы на самом деле не увеличиваете счет.
count = count ++; присваивает значение 1 для подсчета, а затем увеличивает счетчик, но поскольку вы не назначаете счет увеличенного значения, он никогда не увеличивается.
Вам нужно сделать следующее:
count++;
или
count = ++count;
Позвольте мне задать вам вопрос, почему вы делаете две операции над одной переменной, в то время как одного достаточно? Каковы были ваши намерения? count ++ сам был достаточно, так зачем снова присваивать счет. Может быть, вы хотите сделать что-то еще. У вас может быть только счет ++, или ++ count или count + 1. Я думаю, что другие способы приводят к двум операциям. Извините за мой способ написания.