关于for循环的初始化表达式,如何初始化两个(或多个)不同类型的变量?
如题,可能有些拗口,举个例子吧:
- C/C++ code
int ia[] = {1,2,3,4};for(int *p = ia,size_t size = sizeof(ia)/sizeof(ia[0]); p != ia + size; p++){ cout<<*p<<endl;}上述代码会报错,去掉size_t就成功了。当然了,此处让size成为int型也的确没什么糟糕的。可是如果不巧的是,我这里需要的是初始化一个double呢?或string呢?是的,可以把这些初始化放到for的上面,可是有时觉得如果是一次性的变量,我希望它可以是for的局部变量,以避免浪费一些最佳变量名(额,好吧,我承认我强词夺理了^^),或者能让代码更优雅点吧?
拜求解决方案。
[解决办法]
无解.想局部性吗,加对大括号?
int ia[] = {1,2,3,4};
{
int *p = ia,size_t size = sizeof(ia)/sizeof(ia[0]);
for(p != ia + size; p++)
{
cout<<*p<<endl;
}
}
[解决办法]
就算能写,一大串初始化写一行,看起来很是困难啊。
还不如在for外面加上{},即限定作用域又容易看清楚。
[解决办法]
int ia[] = {1,2,3,4};
for(int *p = ia; ; p++)
{
size_t size;
if (p==ia) size = sizeof(ia)/sizeof(ia[0]);
if (p == ia + size) break;
cout<<*p<<endl;
}
[解决办法]
不同类型的没法放在for循环中一起初始化,可以变通一下:
- C/C++ code
{size_t size = sizeof(ia) / sizeof(ia[0]);for(int *p = ia; p != ia + size; p++){ cout << *p << endl;}}
[解决办法]