선행 감소분은 언제 사용해야하며 언제 감소분을 사용해야합니까?
다음 코드 스 니펫의 경우 사전 또는 후행 감소분을 사용해야합니까?
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])
{
}
}
}
값이 나머지 표현식으로 전달되기 전에 변수를 감소시키려는 경우 사전 감소를 사용합니다. 반면에, post-decrement는 변수가 감소되기 전에 표현식을 평가합니다.
int i = 100, x;
x = --i; // both are 99
과
int i = 100, x;
x = i--; // x = 100, i = 99
분명히 증가분에 대해서도 마찬가지입니다.
너는해야한다.++i;
(중요하지 않은)tempCounter--
그렇지 않으면 charArr의 "첫 번째"색인을 놓치게됩니다.
last index - 1
에index = ZERO
. 그래서 루프의 조건에서 사용해야합니다tempCounter--
또는--tempCounter
? - sikas--i;
더 빠르지 만 결코 느리지는 않습니다.i--;
. 하지만 우리 둘 다 같은 선을 안다.i--;
특히 내가 int 형일 때 컴파일러가 최적화 될 것입니다. - EnabrenTanewhile(tempCounter > 0) { charArr[tempCounter--] = /* value */ }
- EnabrenTane
tempCounter = number;
,password[tempCounter - 1]
과charArr[--tempCounter]
사실에도 불구하고while
-loop은 초기화되지 않은 배열에서 작동하며tempCounter
부정적인 결과가 될 수 있습니다. - sjngm