你可以在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;
}
}
有没有一种方法可以做到这一点?(我不需要在循环内使用,只需使用j。)
如果您有完全破解和模糊的解决方案,对我来说是可以的。
在这个人为的例子中,我知道你可以只使用double作为两个变量。我正在寻找一个通用答案。
请不要建议将任何变量移动到for主体外面,对我来说可能无法使用,因为其中一个是迭代器,必须在循环后立即消失,并且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;
请不要引入任何运行时开销(但编译可能会慢)。