Відмова : Я прекрасно знаю семантику приставки та збільшення постфікса. Тому, будь ласка, не поясніть мені, як вони працюють.
Читаючи питання про переповнення стека, я не можу не помітити, що програмісти заплутуються оператором збільшення постфікса знову і знову. З цього випливає наступне питання: чи є випадки використання, коли збільшення постфікса дає реальну користь з точки зору якості коду?
Дозвольте пояснити моє запитання на прикладі. Ось надзвичайна реалізація strcpy
:
while (*dst++ = *src++);
Але це не зовсім самий документ, що самодокументує, в моїй книзі (і він створює два дратівливих попередження про розумні компілятори). То що ж не так із наступною альтернативою?
while (*dst = *src)
{
++src;
++dst;
}
Тоді ми можемо позбутися від заплутаного завдання в умові та отримати повністю без попередження код:
while (*src != '\0')
{
*dst = *src;
++src;
++dst;
}
*dst = '\0';
(Так, я знаю, src
і dst
будуть мати різні значення закінчення в цих альтернативних рішеннях, але оскільки strcpy
негайно повертається після циклу, це не має значення в цьому випадку.)
Здається, мета збільшення постфікса - зробити код максимально стислим. Я просто не бачу, як це ми повинні прагнути. Якщо це спочатку стосувалося продуктивності, чи воно актуальне і сьогодні?
int c = 0; c++;
strcpy
метод таким чином (з причин, про які ви вже згадували).