2010-11-19 79 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*/ 
}