SORU
21 AĞUSTOS 2008, PERŞEMBE


İfadeye Karşı İfade

C açısından soruyorum# ama diğer birçok dilde aynı sanırım.

Herkes iyi bir tanımı var mıifadelervetablolarve farklılıklar nelerdir?

CEVAP
21 AĞUSTOS 2008, PERŞEMBE


İfade:Bir değeri değerlendiren bir şey. Örnek:1 2/x
Açıklama:Bir şey yok kod satırı. Örnek:GOTO 100

FORTRAN gibi genel amaçlı programlama dilleri erken, ayrım kristal berraklığında oldu. FORTRAN, bir deyim yürütme bir birim, yaptığı bir şeydi. Adı bu değildi tek nedeni bir "çizgi bazen birden çok satıra yayılmış çünkü" idi. Kendi başına bir deyim bir şey yapamadı... bir değişken atamak zorunda kaldı.

1 2 / X

bir şey yapmaz, çünkü FORTRAN bir hata. Bu ifade ile bir şeyler yapmak zorunda:

X = 1 2 / X

FORTRAN biz bugün biliyoruz-bir dilbilgisi yoktu;bu fikir, Algol-60 tanımının bir parçası olarak Backus-Naur Form (BNF) ile birlikte icat edildi. Bu noktadasemantik(bir"değeri" karşı "bir şey yap") olduğunu kabul . ayrım ^em>sözdizimi: cümle bir türlü bir ifadesi olduğunu ve başka bir beyanı oldu, ve çözümleyici farkı anlayamazdı.

Daha sonra Dil ayrımı bulanık olan tasarımcılar: sözdizimsel ifadeler şeyler yapabilirler, ve değerleri vardı deyimleri sözdizimi izin verdiler. Hala hayatta olan en popüler dili örnek C tasarımcıları zarar eğer bir ifade değerlendirmek ve sonucu atmak için izin verildi yapıldığını fark C ' dir. C, her cümle ifade sonu boyunca noktalı virgül teyel tarafından bir deyim sadece içine yapılabilir:

1 2 / x;

hiçbir şey olmayacak olsa bile tamamen yasal bir ifadedir. Benzer şekilde, C, bir ifade olabiliryan etkilerive bir şey değiştirebilirsiniz -.

1 2 / callfunc(12);

callfunc işe yarar bir şey olabilir çünkü.

Herhangi bir ifade, bir deyim olmak için bir kez de ifadelerin içinde atama operatörü (=) izin verebilirsiniz. Bu C gibi şeyler yapmanızı sağlar

callfunc(x = 2);

Bu ifade, x = 2 (x 2 değerini atama) değerlendirir ve sonra o (2) işlevi için callfunc geçer.

Bu bulanık ifadeleri ve ifadeler oluşur tüm C-türev (C, C , C# ve Java), hala bazı ifadeleri (while) ancak izin hemen hemen her ifade için kullanılan bir deyim (C# sadece atama, arama, artırma ve eksiltme ifadeler kullanılabilir gibi ifadeler, Scott Wisniewski cevabı).

İki "sözdizimsel kategoriler" şey, ifadeler ve deyimler, bu tür teknik adı) çaba kopyalanmasına neden olur. Örneğin, C koşullu iki biçimi vardır, deyimi oluşturur

if (E) S1; else S2;

ve ifade şekli

E ? E1 : E2

Ve bazen insanlaristiyorumorada olmayan çoğaltılması: örneğin standart C, sadece bir deyim yeni bir yerel değişken&a-ilan edebilir;ama bu yeteneğe sahip olan faydalı yeterlidir GNU C derleyici yerel bir değişken olarak bildirmek için bir ifade sağlayan bir GNU oluşumu sağlar.

Diğer dil tasarımcıları çoğaltılması bu tür gibi değildi, ve eğer ifadeleri yan etkileri gibi değerler, o zaman alabilir bu yüzden erken gördülersözdizimselcümleler ve ifadeler arasındaki ayrım o kadar çok faydalı-değildir;bu yüzden kurtuldular. Haskell, Simge, Lisp, ML cümle açıklamaları-yok bu dil, sadece ifadeler var. Hatta sınıfın döngü ve koşullu formları yapılandırılmış ifadeler olarak kabul edilir, ve değerleri-ama çok ilginç olanlar var.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • mahalodotcom

    mahalodotcom

    8 HAZİRAN 2007
  • Mr_BrettHooge

    Mr_BrettHoog

    3 Ocak 2011
  • Tinkernut

    Tinkernut

    28 Aralık 2006