면책 조항 : 접두사와 접미사 증가의 의미를 완벽하게 알고 있습니다. 그들이 어떻게 작동하는지 설명하지 마십시오.
스택 오버플로에 대한 질문을 읽으면 프로그래머가 접미사 증가 연산자에 의해 반복해서 혼란스러워한다는 것을 알 수는 없습니다. 이것으로부터 다음과 같은 질문이 발생합니다. postfix 증가가 코드 품질 측면에서 실질적인 이점을 제공하는 사용 사례가 있습니까?
예를 들어 내 질문을 명확히 해 드리겠습니다. 다음은 매우 간결한 구현입니다 strcpy
.
while (*dst++ = *src++);
그러나 그것은 내 책에서 가장 자체적으로 문서화 된 코드는 아닙니다 (그리고 제정신 컴파일러에 대해 두 가지 성가신 경고를 생성합니다). 그렇다면 다음 대안의 문제점은 무엇입니까?
while (*dst = *src)
{
++src;
++dst;
}
그런 다음 조건에서 혼란스러운 할당을 제거하고 완전히 경고없는 코드를 얻을 수 있습니다.
while (*src != '\0')
{
*dst = *src;
++src;
++dst;
}
*dst = '\0';
(그래, 난 알고, src
그리고 dst
이러한 대안 솔루션의 다른 결말 값을해야하지만 이후 strcpy
즉시 루프 후 반환,이 경우에는 문제가되지 않습니다.)
postfix 증가의 목적은 가능한 한 코드를 간결하게 만드는 것입니다. 나는 이것이 어떻게 우리가 노력해야 하는지를 보지 못합니다. 이것이 원래 성능에 관한 것이라면 오늘날에도 여전히 관련이 있습니까?
int c = 0; c++;
strcpy
방법으로 코드를 작성한다고 생각 하기 때문입니다 (이미 언급 한 이유로).