SORU
16 Aralık 2011, Cuma


Tür ':&?dönüş#039; (üçlü koşul operatörü)

Neden ilk bir başvuru döndürmek mi?

int x = 1;
int y = 2;
(x > y ? x : y) = 100;

İkinci etmese?

int x = 1;
long y = 2;
(x > y ? x : y) = 100;

Aslında, bu ikinci derleme değil - "atama değil lvalue sol".

CEVAP
16 Aralık 2011, Cuma


İfadeler dönüş türlerini yok, bir türü ve en son C standardı olarak bilinen değer bir kategori var.

Koşullu bir ifade olabilirlvalueya da birrvalue. Bu değer kategorisi. (Bu bir sadeleştirme biraz C 11 lvalues, xvalues ve prvalues var.)

Çok geniş ve basit bir dille, birlvaluebellekte bir nesne anlamına gelir ve birrvaluesadece mutlaka bellekte bir nesne eklenebilir olmayan bir değerdir.

Bir atama ifadesi şey için atanan bir olmalıdır yani bir nesne için bir değer atarlvalue.

Bir olmak için bir koşullu ifade (?:)lvalue(yine geniş ve basit bir dille), ikinci ve üçüncü işlenen olmalıdırlvaluesaynı türden. Bu tip ve değerini koşullu bir ifade kategorisi derleme zamanında belirlenir ve koşul doğru olup olmadığını uygun olmalıdır olmasıdır. Eğer işlenen bir başka maç farklı bir türe dönüştürülmesi gerekir Eğer daha sonra koşullu ifade edebilirlvaluebu dönüşüm sonucu bir olmazlvalue.

14882:2011 IEC ISO/referanslar:

3.10 [temel.lval] Lvalues ve rvalues (değer kategorileri hakkında)

5.15 [ifade.cond] operatörü (koşullu bir ifade ne için kurallar) Koşullu

5.17 [ifade.kıçını] Atama ve işlemli atama operatörleri (gereklilik l.h.s. bir atama olmalı değiştirilebilir bir lvalue)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Day9TV

    Day9TV

    22 NİSAN 2010
  • hanksranger

    hanksranger

    6 EKİM 2009
  • SalGames2016

    SalGames2016

    17 Kasım 2012