2010-11-19 78 views

回答

10

您只能在循环初始化器中使用单个语句。所以你必须要申报外循环的瓦尔的至少一个:

int i; 
double j; 
for (i = 0, j = 0.0f; i <= 30; i++, j++) 

如果有工作两年 INT单词你可能使用for (int i = 0, j = 0; ...)这是有效的,因为只有一个语句(声明多个变量)用来。

+0

那么接下来怎么就没有问题 的for(int i = 0, j = 0; i <= 30; i ++,j ++) – Marty 2010-11-19 22:33:40

+0

@marty:看我的编辑 – ThiefMaster 2010-11-19 22:34:00

0

如何在循环之前声明它们?变量声明中的逗号仅用于区分类型,而且它是一个令人困惑的读取,无论如何。更何况,更难以知道什么时候会发生什么。顺便说一句,float上的“++”在技术上并不会产生精确值(不能保证,就像int),所以我也很好奇为什么你需要这样做。

int i; 
double j = 0.0f; 
for(i=0; i<=30; i++) { 
    j += 1.0f; 
    // other stuff 
} 

更容易阅读,反正。也许特别是对于其他人,至今还不熟悉它正在做什么。

0

我不是一个Objective-C程序员,但是我所知道的for循环是,你不能用中间的逗号声明。
int i, double j;是不允许的。所以你必须做的是决定使用double还是integer。
换句话说,没有办法像在for循环的括号内所做的那样声明。
使用int i, j;double i, j

1

for循环的初始化程序部分只能是单个语句。您可以在单个语句中声明多个常用类型的变量,例如int i, j;,但不能以这种方式声明不同类型的多个变量。

如果你想这两个值限制在for -loop的身体,你可以附上的声明和for环在一个复合语句,就像这样:

{ 
    double j = 0.0; 
    for (int i = 0; /*test*/; /*at-end statement*/) { 
     /* body */ 
    } 
} 

您也可以解决这种通过使用匿名结构(尽管这只是掩盖了点,但这恰恰做你想要什么):

for (struct {int i; double j;} ctx = {0, 0.0}; /*test ctx.i or ctx.j*/; /*at-end*/) { 
    /*body*/ 
}