2

선행 감소분은 언제 사용해야하며 언제 감소분을 사용해야합니까?

다음 코드 스 니펫의 경우 사전 또는 후행 감소분을 사용해야합니까?

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])
        {
        }
    }
}


  • 당신의 코드가 간다면, 그것이 있어야한다고 생각합니다.tempCounter = number;,password[tempCounter - 1]charArr[--tempCounter]사실에도 불구하고while-loop은 초기화되지 않은 배열에서 작동하며tempCounter부정적인 결과가 될 수 있습니다. - sjngm
  • 가능한 중복++ i와 i ++의 차이점은 무엇입니까? - TylerH

2 답변


4

값이 나머지 표현식으로 전달되기 전에 변수를 감소시키려는 경우 사전 감소를 사용합니다. 반면에, post-decrement는 변수가 감소되기 전에 표현식을 평가합니다.

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

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

분명히 증가분에 대해서도 마찬가지입니다.


  • 그래서charArr[--tempCounter]~에서 가치가 다를 것이다.charArr[tempCounter--]while 루프의 조건에서. 이렇게하면tempCounter조건을 확인하기 전에 - sikas
  • @sikas : 두 번째 줄을 이해할 수 없습니다. 두 버전 모두 루프 내에서 동일한 값을 사용하게됩니다. 사전 / 사후 감소는 내부에서 일어나는 일에만 영향을줍니다.while-표현. - sjngm

0

너는해야한다.++i;(중요하지 않은)tempCounter--그렇지 않으면 charArr의 "첫 번째"색인을 놓치게됩니다.


  • C #에서 iirc, pre- 대 증후 / 증분은 속도면에서 차이가 없습니다. - Jeff Hubbard
  • 나는 두 번째 while 루프에서 charArr의 값을 업데이트하고있다.last index - 1index = ZERO. 그래서 루프의 조건에서 사용해야합니다tempCounter--또는--tempCounter? - sikas
  • 이것은 내장 된 시간에 적용될 수 있지만 일반적으로 이러한 연산자를 정의하는 사용자 클래스에는 사실이 아닙니다.--i;더 빠르지 만 결코 느리지는 않습니다.i--;. 하지만 우리 둘 다 같은 선을 안다.i--;특히 내가 int 형일 때 컴파일러가 최적화 될 것입니다. - EnabrenTane
  • @sikas 나는 사용할 것이다.while(tempCounter > 0) { charArr[tempCounter--] = /* value */ } - EnabrenTane

연결된 질문


관련된 질문

최근 질문