2010-11-19 24 views

cevap

10

Döngü başlatıcısında yalnızca tek bir deyim kullanabilirsiniz. Yani döngü dışında vars en az birini beyan gerekecek: Bu Çalıútıysa

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

iki int s muhtemelen (çoklu değişkenleri bildirir) yalnızca tek bir deyim beri geçerlidir for (int i = 0, j = 0; ...) kullanılan kullanıldı.

+0

Yani o zaman için ile ilgili bir sorun yok nasıl oluyor (int i = 0, j = 0; i <= 30; i ++, j ++) – Marty

+0

@marty: Düzenlememe bak – ThiefMaster

0

Onları döngüden önce nasıl beyan edersiniz? Değişken beyanındaki virgül, yalnızca benzer türler ayırmaktır ve yine de kafa karıştırıcı bir okumadır. Bahsetmemek, tam olarak ne olacağını bilmek zorlaştırıyor. Bir kayan nokta üzerindeki Btw, "++" teknik olarak tam değerleri vermez (bir int gibi garanti edilmez), bu yüzden neden bunu yapmanız gerektiğini merak ediyorum.

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

Her halükarda daha kolay okunur. Belki de özellikle diğerleri için, ne yaptığının bilinmediği gibi.

0

Amaç-c programcısı değilim, ancak döngüleri hakkında bildiğim şey, aralarında bir virgülle bildiremeyeceğinizdir.
int i, double j; izin verilmiyor. Yani yapmanız gereken, çift veya tamsayı kullanmaya karar vermektir.
Başka bir deyişle, for döngüsü parantez içinde yaptığınız gibi bildirmek için bir yolu yoktur.
int i, j; veya double i, j'dan birini kullanın!

1

for döngüsünün başlatıcı kısmı yalnızca tek bir ifade olabilir. Ortak bir türden birden çok değişkeni, tek bir ifadede, ör. int i, j;, ancak bu şekilde farklı türlerde birden fazla değişken bildiremezsiniz.

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

Ayrıca çalışabilirsiniz: Eğer for -loop gövdesine iki değeri sınırlamak isterseniz, şöyle deklarasyon ve tek bileşik açıklamada for döngü, çevreleyebileceğim

Bu anonim bir yapı (bu sadece noktası gizler olsa da, ne istediğinizi tam olarak yapar) kullanarak:

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