'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
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.
C dönüş "BOŞ" nesne arama so...
Sayı içine boolean sonucu dönüştürmek/...
Neden Java 8 bazen bölünmüş kaldırır s...
Bir veri Kümesi dolgu ya da SERİ bir s...
Malloc sonucu dökme muyum?...