до декремента против пост декремента

2

Когда следует использовать предварительный декремент и когда использовать пост декремент?

и для следующего фрагмента кода, следует ли использовать pre или post decment.

static private void function(int number)
{
    charArr = new char[number];
    int i = 0;
    int tempCounter;
    int j = 0;
    while(charrArr!=someCharArr)
    {
        tempCounter = number - 1;
        password[tempCounter] = element[i%element.Length];
        i++;
        //This is the loop the I want to use the decrementing in.
        //Suppose I have a char array of size 5, the last element of index 5 is updated
        //in the previous statement.
        //About the upcoming indexes 4, 3, 2, 1 and ZERO.
        //How should I implement it?
        // --tempCounter or tempCounter-- ?
        while (charArr[--tempCounter] == element[element.Length - 1])
        {
        }
    }
}
  • 0
    Насколько ваш код идет, я думаю, что это должно быть tempCounter = number; , password[tempCounter - 1] и charArr[--tempCounter] несмотря на тот факт, что while -loop будет работать с неинициализированным массивом, а tempCounter может стать отрицательным.
  • 0
    Возможный дубликат В чем разница между ++ i и i ++
Теги:
decrement

2 ответа

4
Лучший ответ

Вы используете пре-декремент, если хотите уменьшить значение переменной до того, как значение будет передано оставшемуся выражению. С другой стороны, пост-декремент оценивает выражение до того, как переменная будет уменьшена:

int i = 100, x;
x = --i;                // both are 99

и

int i = 100, x;
x = i--;                // x = 100, i = 99

То же самое верно для приращений.

  • 0
    поэтому charArr[--tempCounter] будет отличаться по значению от charArr[tempCounter--] в условии цикла while. Это tempCounter перед проверкой условия.
  • 1
    @ Sikas: я не понимаю вашу вторую строку. Обе версии вызовут использование одного и того же значения внутри цикла. Пре / постдекремент влияет только на то, что происходит внутри выражения while .
0

у вас должно быть ++i; (не это важно), и должно быть tempCounter-- В противном случае вы пропустите "первый" индекс charArr

  • 0
    В C # iirc до и после увеличения / уменьшения не имеет значения в скорости.
  • 0
    Я обновляю значения charArr во втором цикле while с last index - 1 до index = ZERO . так что в состоянии цикла я должен использовать tempCounter-- или --tempCounter ?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню