Замена инкремента цикла на декремент
Поскольку, машинные инструкции декремента (уменьшения значения переменной) автоматически выбрасывают Zero-флаг при достижении нуля, сравнивать уменьшаемую переменную с нулем не требуется – это автоматически делает сам процессор. Отсюда: цикл for (a=10;a>0;a--)
транслируется в более компактный и быстродействующий код, нежели цикл for (a=0;a<10;a++).
Если аргумент цикла не используется в самом цикле, то компилятор Microsoft Visual C++ всегда транслирует его в цикл с декрементом. Например, пусть исходный код программы выглядел так:
for(a=0;a<10;a++)
printf("Hello, Sailor!\n");
Поскольку, переменная 'a' не используется в теле цикла, заголовок цикла можно безболезненно переписать так:
for(a=10;a>0;a--)
Из всех трех рассматриваемых компиляторов на такой трюк способен один лишь Microsoft Visual C++, – ни Borland C++, ни WATCOM этого делать не умеют.