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

  • atKristaBradford

    atKristaBrad

    4 Aralık 2010
  • Fr. Eckle Studios

    Fr. Eckle St

    29 Kasım 2006
  • Munchkin the Teddy Bear

    Munchkin the

    30 EYLÜL 2011