SORU
18 Mayıs 2012, Cuma


'C = sonucu s ve C ?

Aşağıdaki kodu var:

#include <stdio.h>
int main(int argc, char **argv) {
    int i = 0;
    (i =10) =10;
    printf("i = %d\n", i);
    return 0;
}

Eğer C kaynak gcc kullanarak derlemek için çalışırsanız bir hata alıyorum:

error: lvalue required as left operand of assignment

Ama ben C kaynak g kullanarak derleme yürütülebilir çalıştırdığımda: hiçbir hata ve ben

i = 20

Neden farklı davranış?

CEVAP
18 Mayıs 2012, Cuma


Bu semantik Ekle-ata C ve C : farklı operatörler

, 6.5.16, C99 standardı Bölüm 3:

Atama operatörü bir nesneyi sol belirlenmiş işlenen bir değer depolar. Bir atama ifadesi atama sonra sol işlenen değeri vardır, ama değildir. lvalue.

C 5.17.1:

Atama operatörü (=) ve bileşik atama operatörleri tüm grup soldan sağa. Bir değiştirilebilir gerektirir atama gerçekleştikten sonra sol işlenen olarak lvalue ve sol türü ve değeri ile bir lvalue dönüş işlenen.

DÜZENLEME :C (i =10) =10 davranış C 11 C 98, ama tanımlanmış iyi tanımlanmamış. this answer standartların ilgili bölümleri için NPE soruya bakın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jose LviS el Bambino ( JLB )   LviSito

    Jose LviS el

    3 ŞUBAT 2008
  • BSA

    BSA

    9 NİSAN 2012
  • Cristina Landa

    Cristina Lan

    28 Ocak 2010