SORU
10 EYLÜL 2008, ÇARŞAMBA


Nasıl Virgül Operatörü iş yapar

Nasıl virgül operatörünü C çalışır ?

Eğer yaparsam örneğin:

a = b, c;

B ve c eşit bir sonu var mı?

(Evet, bu kolay test etmek için sadece burada birine cevap bulmak için hızlı bir şekilde belgeleyen biliyorum.)

Güncelleme:Bu soruyu virgül operatörünü kullanırken bir ayrıntıyı ortaya çıkardı. Sadece bu belge için:

a = b, c;    // a is set to the value of b!

a = (b, c);  // a is set to the value of c!

Bu soru aslında kodda bir yazım hatası esinlenilmiştir. Olacaktı

a = b;
c = d;

Dönüştü

a = b,    //  <-  Note comma typo!
c = d;

CEVAP
10 EYLÜL 2008, ÇARŞAMBA


Bakım virgül operatörünü C aşırı dikkat edin . Gerçek davranış böylece bir beklenenden çok farklı olabilir.

Örnek olarak, Boost.Spirit liste başlatıcılar uygulamak için oldukça akıllıca virgül operatörünün sembol tabloları için kullanır. Böylece, aşağıdaki sözdizimini mümkün ve anlamlı hale getirir:

keywords = "and", "or", "not", "xor";

Operatör önceliği nedeniyle, kodu (kasıtlı!) dikkat edin aynı

(((keywords = "and"), "or"), "not"), "xor";

Yani, ilk operatör olarak adlandırılan operator, kalan s çağırılan bir proxy nesnesi verir: keywords.operator =("and")

keywords.operator =("and").operator ,("or").operator ,("not").operator ,("xor");

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DeAdPiXel6667

    DeAdPiXel666

    2 Ocak 2010
  • Ionized Digital Air Studios

    Ionized Digi

    20 HAZİRAN 2009
  • ehowhome

    ehowhome

    22 NİSAN 2009