首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于for循环的初始化表达式,怎么初始化两个(或多个)不同类型的变量

2012-08-01 
关于for循环的初始化表达式,如何初始化两个(或多个)不同类型的变量?如题,可能有些拗口,举个例子吧:C/C++ c

关于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;}}
[解决办法]
探讨
我的叙述中已经表明这种方式排除在外,所以这样的回复是没有任何价值的……

热点排行