如何在objective-c中为for循环声明一个int和double?

时间:2010-11-19 22:30:10

标签: objective-c

我试过

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

但它不喜欢那样。它说“'j'未宣布”。如果两者都是整数,那就有用了。有没有办法在for循环中声明它?

4 个答案:

答案 0 :(得分:10)

您只能在循环初始值设定项中使用单个语句。所以你必须在循环之外声明至少一个变量:

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

如果它适用于两个 int ,你可能使用了for (int i = 0, j = 0; ...)这是有效的,因为只使用了一个语句(声明了多个变量)。

答案 1 :(得分:1)

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

如果要将两个值都限制为for - 循环的主体,可以将声明和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*/
}

答案 2 :(得分:0)

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

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

无论如何都更容易阅读。也许尤其对其他人来说,还不熟悉它正在做的事情。

答案 3 :(得分:0)

我不是一个客观的程序员,但我对循环的了解是你不能用逗号之间声明。
int i, double j;是不允许的。所以你要做的就是决定使用double或integer。
换句话说,没有办法像你在for循环的括号内所做的那样声明 使用int i, j;double i, j