您可以在 for 循环中定义 2 个相同类型的变量:
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 body 之外,这对我来说可能不可用,因为一个迭代器必须在循环之后消失,而 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;
请不要引入任何运行时开销(但编译可能会很慢)。