你可以在 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 主体之外,这可能对我来说不可用,因为其中一个是迭代器,必须在循环之后立即消失,并且 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;
请不要引入任何运行时开销(但编译速度可能会很慢)。
最佳答案
Please do not suggest to move any of the variables outside of for body, probably not usable for me as the iterator has to disappear just after the loop.
你可以这样做:
#include <iostream>
int main( int, char *[] ) {
{
float j = 0.0;
for ( int i = 0; i < 10; i += 1, j = 2*i ) {
std::cout << j << std::endl;
}
}
float j = 2.0; // works
std::cout << j << std::endl;
return 0;
}
关于c++ - 有没有办法在 for 循环初始值设定项中定义两种不同类型的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/866012/