C programlama dilinde neden bitlik işleçler (& ve |) eşitlik operatöründen (==) daha düşük önceliğe sahiptir? Benim için mantıklı değil.Kullanıcı önceliği (bitwise '&' küçüktür '==')
cevap
Brian Kernighan veya Dennis Ritchie'ye sormanız gerekir. Bu forumda itibaren
: http://bytes.com/topic/c/answers/167377-operator-precedence
& & ve || operatörler daha sonra "kısa devre" davranışları için eklenmiştir. Dennis Ritchie, numaralı belgede, mantıksal işleçler eklendiğinde bitly işleçlerin önceliğinin değiştirilmiş olması gerektiğini geriye doğru inceler. Ama yüz birkaç o noktada varlığı C kaynak kodunu kilobayt ve üç bilgisayarların bir yüklü tabanıyla birlikte Dennis, Eee ... C dilinde bir değişimin çok büyük olurdu
düşünce Bu bir sebep olabilir mi? Tahminimce bitümden beri varolan çırpınan (ilişkilerin karşılaştırılmasından farklı olarak) birkaç bitümlü bitüm katmanı vardır, çünkü sonsuza dek ... ve asla düzeltilmemiştir.
Lanetlendi. Laziness :( –
Doomed Bu alıntı aslında yanlış sıralanmıştır Dennis Ritchie, kendi kendini "Chistory" adlı makalesinde şöyle açıklar: Burada okuyabilirsiniz (http://cm.bell-labs.co/who/dmr/chist). html) Bence Ritchie'nin ifadesi çok daha iyi.Ritchie, önceliğe sahip olduğundan pişmanlık duymuştu, fakat, C dilini oluştururken, B'nin, C'nin öncülü olandan, minimal dönüşüm sürtünmesi için yapıldı. B sadece hücreler üzerinde '&' destekliydi ve B tipi bir sistem eksikliğinden dolayı açık bir boole operatörüne sahip değildi. Bu aynı zamanda "gerçek" in neden "0 değil" anlamına geldiğini - bitsel AND'nin her zaman mükemmel bir sonuç vermediğini açıklıyor. – Qix
Ama '==' kısa devre yapan bir operatör değil, bu yüzden bu soruya nasıl cevap veriyor? Bununla birlikte, @Qix'e teşekkürler, çünkü yorumunuz ayrıca bitsel operatörlerin neden farklı (göründüğü gibi) önceliklere sahip olduklarını açıklıyor - B'den gelenler [B Öğretici Ek D] 'de görüldüğü gibi (https: //www.bell- labs.com/usr/dmr/www/btut.html)_ (beni rahatsız eden bir soru). (Ve benim tahminimce B bu şekilde başka hiçbir sebepten ötürü bu tür bir ifade dilbilgisi ile tekrarlayan bir soy ayrıştırıcısı yazmak kolay değildir.) – davidbak
K & R'nin neden yaptıkları önceliği seçtiğine dair yetkili bir cevabım yok. anlamda adil bir miktar bu bir olurdu yapar bir örnek: Bu bitler halinde VE operatörü kullandığı yana
if (x == 1 & y == 0) {
/* ... */
}
olmayan bir kısa devre
if (x == 1 | y == 0) {
/* ... */
}
kullandığınız gibi, değerlendirme modu kısa devre yapmayan VEYA operatör. Muhtemelen öncelikli gruba bu şekilde sahip olmayı seçtiler, ama ben size katılıyorum ki geçmişe bakıldığında iyi bir fikir gibi görünmüyor.
Bu hiçbir anlam ifade etmiyor. Bu durumda neden mantıklı bir işlem yerine bitsel operatörü kullanıyorsunuz? –
@Nathan Fellman- Caladain'in cevabı kafasına çarptı. – templatetypedef
Sağ. '&' Ve '|' nin önceliği mantıksal işleçler olarak mükemmel bir anlam taşır, ancak bitly operatörler kadar az anlam ifade eder. – dan04
Bu, retrospect'de Dennis Ritchie'ye mantıklı gelmiyor.
http://www.lysator.liu.se/c/dmr-on-or.html
& & ve || sonra dile eklendi | ve &, ve uyumluluk nedenlerinden dolayı korunmuştur.
- 1. Lua'da "Bitwise AND" "
- 2. Doctrine2 Querybuilder bitwise ve
- 3. Kesişen iki tamsayı bitwise
- 4. operatörünün önceliği
- 5. NSURLSession önceliği
- 6. Express.js'nin yönlendirici önceliği sırası
- 7. Bitwise & javascript beklenen sonucu döndüremiyor
- 8. Rust'ta bitwise NOT operatörü nedir?
- 9. Operatör önceliği boost :: spirit?
- 10. Lambda Calculus operatörleri önceliği
- 11. Nginx konum önceliği
- 12. Değişiklik İşlem önceliği çalışmıyor
- 13. Hammer.js olay önceliği
- 14. Kapalı parametre çözünürlüğü - önceliği ayarlama
- 15. BitSet ve raw bitwise manipülasyon performansı
- 16. C# ushort üzerinde bitwise shift (UInt16)
- 17. Python'da "Bitwise Not", 2'nin tamamlayıcısı olan
- 18. Nasıl bitwise AND (&) cinsinden geri dönüş yapılır?
- 19. Java Numaralandırmaları birleştirilebilir (C# içinde Bitwise gibi)?
- 20. Önceliği alır, maxRequestLength veya maxAllowedContentLength?
- 21. operatörün önceliği:! ve JavaScript yılında
- 22. PHP/MySQL veritabanı bağlantısı önceliği?
- 23. Yığın Sırala (Java) Önceliği Listesi
- 24. Salesforce Toplu API iş önceliği
- 25. mutlu bağlam-bağımlı Operatör Önceliği
- 26. w3wp otomatik olarak önceliği değiştirir
- 27. operatörü önceliği (bool'den önce void *)
- 28. RabbitMQ'da kereviz görevi önceliği için geçici çözüm?
- 29. Limon dilbilgisi ile ilgili sorunlar (önceliği?)
- 30. d3 kuvvet yönelimli düzen - bağlantı mesafesi önceliği
Çünkü bu şekilde tasarlandı. Ayrıca, parantezler ucuzdur. – CanSpice
Neden size mantıklı gelmiyor? – peoro
(a & b == c) ifadesinin kullanıldığı durumlarda yakalandım, neden çalışmadığını öğrenmek için biraz zaman harcadım. – poida