Вы можете определить 2 переменные одного и того же типа в цикле for:
int main() {
for (int i = 0, j = 0; i < 10; i += 1, j = 2*i) {
cout << j << endl;
}
}
Но нелегально определять переменные разных типов:
int main() {
for (int i = 0, float j = 0.0; i < 10; i += 1, j = 2*i) {
cout << j << endl;
}
}
Есть ли способ сделать это? (Мне не нужно использовать i
внутри цикла, просто j
.)
Если у вас есть полностью взломанное и непонятное решение, это нормально для меня.
В этом надуманном примере я знаю, что вы можете просто использовать double
для обеих переменных. Я ищу общий ответ.
Пожалуйста, не предлагайте перемещать какие-либо переменные за пределами тела, возможно, не используемые для меня, поскольку один из них - это итератор, который должен исчезнуть сразу после цикла, а оператор for должен быть заключен в мой макрос foreach
#define foreach(var, iter, instr) { \
typeof(iter) var##IT = iter; \
typeof(iter)::Element var = *var##IT; \
for (; var##_iterIT.is_still_ok(); ++var##IT, var = *var#IT) { \
instr; \
} \
}
Его можно использовать таким образом:
foreach(ii, collection, {
cout << ii;
}).
Но мне нужно что-то, что будет использовано так:
foreach(ii, collection)
cout << ii;
Пожалуйста, не вводите служебные данные во время выполнения (но это может быть медленным для компиляции).