我试过
for (int i = 0, double j = 0.0f; i <= 30; i++, j++)
但它不喜欢那样。它说“'j'未宣布”。如果两者都是整数,那就有用了。有没有办法在for循环中声明它?
答案 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
!