Возможно, это не имеет значения для компилятора после того, как он оптимизирует, но в C / C ++ Я вижу, что большинство людей создают цикл for в виде:
for (i = 0; i < arr.length; i++)
, где увеличение выполняется с помощью post fix ++. Я понимаю разницу между двумя формами. i ++ возвращает текущее значение i, но затем незаметно добавляет 1 к i. ++ i сначала добавляет 1 к i и возвращает новое значение (на 1 больше, чем было).
Я думаю, что i ++ требует немного больше работы, так как предыдущее значение необходимо сохранить в дополнение к следующему значение: нажмите * (& i) в стек (или загрузите в регистр); приращение * (& i). По сравнению с ++ i: приращение * (& i); затем используйте * (& i) по мере необходимости.
(Я понимаю, что операция "Increment * (& i)" может включать загрузку регистра, в зависимости от конструкции процессора. В этом случае i ++ потребуется либо другой регистр, либо добавление стека .)
Да и вообще, в какой момент и почему i ++ стал более модным?
Я склонен верить ажеглову: Это педагогический метод, и, поскольку большинство из нас использует C / C ++ в системе Window или * nix, где компиляторы имеют высокое качество, никто не пострадает.
Если вы используете компилятор низкого качества или интерпретируемую среду, вам, возможно, придется учитывать это. Конечно, если вы занимаетесь продвинутым C ++, драйвером устройства или встроенным ПО, надеюсь, вы достаточно опытны, чтобы это не было большой проблемой. (Есть ли у собак природа Будды? Кому действительно нужно знать?)