Итак, если у вас есть:
for (int i = 0, j = 0; i < 5 && j < 3; ++i, ++j)
аналогично:
int i = 0, j = 0;
while (i < 5 && j < 3) {
++i;
++j;
}
, то же самое происходит и с записями после точки с запятой на каждой итерации в порядкеэто написано?
Как вы можете видеть сверху код да .
Также, скажем, при i = 2, тогда res + = pow(10,3)?Это правильно?
Не обязательно, потому что не гарантируется, что i
будет увеличен до того, как он будет передан в функцию.Проверьте это: Порядок операций для преинкремента и постинкремента в аргументе функции?
У вас также есть эта проблема
num != 0;
что произойдет, еслиделение:
num /= 7;
случайно пропускает ноль, поэтому я рекомендую вам сделать следующее:
num > 0;
Итак, со всем вышеперечисленным я бы написал эту строку:
for(int i=0; num!=0; res += pow(10,i++)*(num % 7), num /= 7) {}
следующим образом:
for(int i=0; num!=0; ++i, res += pow(10,i)*(num % 7), num /= 7) {}
если мне нужно убедиться, что i
увеличивается до того, как оно передается в функцию, или .:
for(int i=0; num!=0; res += pow(10,i)*(num % 7), ++i, num /= 7) {}
Если янеобходимо убедиться, что i
увеличивается после того, как оно передается в функцию.