1. В цикле for нету разницы между постфиксной или префиксной формы декремента/инкремента для переменной-счетчика.
2. Первый проход цикла осуществляется с начальным значением i. Потом переменная-счетчик изменяется и второй проход цикла уже будет со значением i1 и т.д.
3. В вашем случае всё было сделано правильно:
exl@exl-Lenovo-G560e:~/SandBox > cat test.cpp
#include <iostream>
int main() {
int f = 15;
for(int i = --f; i > 0; --i)
std::cout << i << " ";
std::cout << std::endl;
return 0;
}
exl@exl-Lenovo-G560e:~/SandBox > g++ test.cpp
exl@exl-Lenovo-G560e:~/SandBox > ./a.out
14 13 12 11 10 9 8 7 6 5 4 3 2 1
Заметьте, что для значения, которым мы будем инициализировать переменную-счетчик, разница в декременте/инкременте есть:
exl@exl-Lenovo-G560e:~/SandBox > cat test.cpp
#include <iostream>
int main() {
int f = 15;
for(int i = f--; i > 0; --i)
std::cout << i << " ";
std::cout << std::endl;
return 0;
}
exl@exl-Lenovo-G560e:~/SandBox > g++ test.cpp
exl@exl-Lenovo-G560e:~/SandBox > ./a.out
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1