SORU
12 AĞUSTOS 2011, Cuma


[] int a = {1,2,}; Garip virgül izin verdi. Herhangi bir sebebi var mı?

Belki de bu gezegenden değilim, ama aşağıdaki sözdizimi bir hata olması gerektiğini bana görünüyor:

int a[] = {1,2,}; //extra comma in the end

Ama öyle değil. Bu kod, Visual Studio üzerinde derlenmiş şaşırdım, ama standart ve kontrol ettim MSVC derleyici C kuralları ile ilgili olarak güven için değil öğrendimstandart olarak izin verdi. Eğer bana inanmıyorsun ama dilbilgisi kuralları için 8.5.1 görebilirsiniz.

enter image description here

Neden bu izin veriliyor? Bu aptal gereksiz bir soru olabilir ama ben size soruyorum neden anlamak istiyorum. Eğer olsaydı bir alt-örnek bir genel dilbilgisi kuralı, ben anlardım - karar değil, genel dilbilgisi daha zor sadece izin vermemek lüzumsuz bir virgül sonunda bir başlatıcı listesi. Ama hayır, ek bir virgülaçıkçaizin verdi. Örneğin, bir işlev çağrısı bağımsız değişken listesinin sonuna fonksiyonu ... alır, gereksiz bir virgül için geçerli olmadığını gördüknormal olan.

Yani, yine bu gereksiz virgül özel bir sebebi vardıraçıkçaizin veriliyor mu?

CEVAP
12 AĞUSTOS 2011, Cuma


Daha kolay kaynak kodu oluşturmak için, ve aynı zamanda kolayca daha sonraki bir tarihte kullanılmaya kod yazmak için yapar. Ekstra bir girdi eklemek için gerekli olanı düşünün:

int a[] = {
   1,
   2,
   3
};

... mevcut hat için virgül eklemek zorundaveyeni bir satır ekleyin. Üç vakası ile karşılaştırınzatensadece bir satır eklemek zorunda nerede sonra bir virgül var. Aynı şekilde, eğer bir satırı kaldırmak istiyorsanız, bu yüzden son satırı olup olmadığını önemsemeden yapabilirsiniz, ve virgül ile işe yaramaz olmadan satırları yeniden sıralayabilirsiniz. Temelde satırları nasıl davrandığını bir tekdüzelik var demektir.

Şimdi kod oluşturma hakkında düşünüyorum. Bir şey gibi (pseudo-code):

output("int a[] = {");
for (int i = 0; i < items.length; i  ) {
    output("%s, ", items[i]);
}
output("};");

Hayır yazı çıkıyorsun mevcut maddenin ilk veya son olup olmadığı hakkında endişelenmenize gerek yok. Çok daha basit.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • newport83

    newport83

    19 HAZİRAN 2006
  • PlugResearch

    PlugResearch

    22 Mart 2006
  • PremiumBeat.com - Royalty Free Music

    PremiumBeat.

    16 Kasım 2008