Aracılığıyla paylaş


Öncelik ve değerlendirme sırasını

Öncelik ve birleşim c işleçlerin işlenenleri ifadelerde değerlendirme ve gruplandırma etkiler.Bir işlecin öncelik yalnızca diğer daha yüksek veya düşük öncelik sırasına sahip işleçler varsa anlamlıdır.Önceliği yüksek işleçler ifadelerle ilk olarak değerlendirilir.Word "bağlama tarafından." önceliği de tanımlanabilir Daha yüksek bir öncelik sırasına sahip işleçler daha sıkı bağlama sahip söylenir.

Öncelik ve birleşim özellikleri aşağıdaki tabloda özetlenmiştir (işlenenler değerlendirilen sırası) onlara öncelik en yüksekten en düşük listeleme c işleci.Birkaç işleci birlikte görünür bir yerde eşit önceliğe sahiptir ve bunların birleşim göre değerlendirilir.İşleçler, tablo ile başlayan bölümlerinde açıklanan Sonek operatörleri.Bu bölümün geri kalanında, öncelik ve birleşim özellikleri hakkında genel bilgi verir.

Öncelik ve birleşim özelliklerini c işleçleri

Symbol1

İşlem türü

Birleşim özellikleri

[ ] ( ) . – > sonek ++ ve sonek

İfade

Soldan sağa

Önek ++ ve önek –sizeof & * + – ~! 

Tekli

Sağdan sola

typecasts

Tekli

Sağdan sola

* / %

Çarpma

Soldan sağa

+ –

ADDITIVE

Soldan sağa

<< >>

Bitsel kaydırma

Soldan sağa

< > <> = =

İlişkisel

Soldan sağa

== !=

Eşitlik

Soldan sağa

&

Bitsel- ve

Soldan sağa

^

Özel veya bitwise

Soldan sağa

|

Bitsel-dahil-or

Soldan sağa

& &

Mantıksal- ve

Soldan sağa

||

Mantıksal or

Soldan sağa

?:

Koşullu deyim

Sağdan sola

= *= /= %= 

+= – = <> = = & =

^= |=

Basit ve bileşik assignment2

Sağdan sola

,

Sıralı değerlendirme

Soldan sağa

1.İşleçler, azalan öncelik sırasına göre listelenmiştir.Birkaç işleci aynı satırda veya grup görünüyorsa, bunlar eşit önceliğe sahiptir.

2.Tüm basit ve bileşik atama operatörleri eşit önceliğe sahiptir.

Bir deyim birkaç operatörleri eşit önceliğe sahip içerebilir.Birkaç işleci bir deyim içinde aynı düzeyde göründüğünde, değerlendirme için birleşim işlecini, sağdan sola veya soldan sağa özelliklerini göre devam eder.Değerlendirme yönünü birden fazla çarpma içeren deyimleri sonuçlarını etkilemez (*), ayrıca (+), veya ikili bitwise (& | ^) işlecini aynı düzeyde.İşlem sırası, dil tarafından tanımlı değil.Derleyici herhangi bir sırada böyle değerlendirebilir boş ise derleyici tutarlı bir sonuç garanti.

Yalnızca sıralı değerlendirme (,), mantıksal- ve (& &), or mantıksal (||), koşullu deyim (? :), ve işlev çağrısı işleçleri sırası noktaları oluşturur ve bu nedenle belirli bir değerlendirme için kendi işlenenleri sırasını garanti.İşlev çağrısı işleci işlev tanımlayıcısını ayraç kümesidir.Sıralı değerlendirme işlecini (,) İşlenenlerini soldan sağa doğru değerlendirmek için garanti edilir.(Virgül operatörünü bir işlev çağrısı içinde sıralı değerlendirme işlecini aynı değildir ve böyle bir garanti sağlamaz unutmayın.) Daha fazla bilgi için bkz: Sıra puan.

Mantıksal işleçler de kendi işlenenleri değerlendirme soldan sağa garanti.Ancak, işlenen ifadenin sonucunu belirlemek için gereken en küçük sayıyı değerlendirin."Değerlendirme short-circuit" denir.Bu nedenle, bazı işlenen ifade değerlendirilecek değil.Örneğin, deyim

x && y++

ikinci işlenen y++, yalnızca değerlendirilir x ise true (sıfırdan farklı).Bu nedenle, y , artmaz x False (0).

Örnekler

Aşağıdaki listede, derleyici birkaç örnek ifadeleri otomatik olarak bağlar nasıl gösterir:

İfade

Otomatik bağlama

a & b || c

(a & b) || c

a = b || c

a = (b || c)

q && r || s--

(q && r) || s––

İlk ifadesinde, bit- ve işleci (&) veya mantıksal işleci daha yüksek önceliğe sahiptir (||), bunu a & b veya mantıksal işleci birinci işleneni oluşturur.

İkinci ifade, veya mantıksal işleci (||) basit atama işleci daha yüksek önceliğe sahiptir (=), bunu b || c atamasında sað iþlenen olarak gruplandırılır.Atanan değeri Not a 0 veya 1.

Üçüncü ifade, beklenmeyen bir sonuç üretebilir doğru biçimlendirilmiş bir ifadeyi gösterir.Mantıksal- ve işleci (&&) veya mantıksal işleci daha yüksek önceliğe sahiptir (||), bunu q && r işlenen gruplandırılır.Mantıksal işleçlerin işlenenleri değerlendirme soldan sağa, garanti bu yana q && r önce değerlendirilir s––.Ancak, q && r sıfır dışında bir değere değerlendirilen s–– değerlendirilmesi değil, ve s küçültülüyor değil.Azaltma değil, s programınızda bir sorun neden s–– ifadenin birinci işlenenin görünmesi gereken veya s ayrı bir işlemde indirildiği düğümlerde olmalıdır.

Aşağıdaki deyim geçersiz ve derleme zamanında bir tanılama iletisi üretir:

Geçersiz ifade

Varsayılan gruplandırma

p == 0 ? p += 1: p += 2

( p == 0 ? p += 1 : p ) += 2

Bu ifadede, Eşitlik işlecini (==) dolayısıyla en yüksek önceliğe sahip p == 0 işlenen gruplandırılır.Koşullu ifade işleci (? :) sonraki en yüksek önceliğe sahiptir.Onun ilk işleneninin p == 0, ve onun ikinci işlenen p += 1.Ancak, son işlenen koşullu ifade işleci olarak kabul edilir p yerine p += 2, bu oluşumu, beri p koşullu ifade işleci bileşik atama işleci sakladığından daha yakın bağlar.Bir sözdizimi hatası nedeniyle oluşur += 2 sol işleç değişkeni yok.Bu tür hataları önlemek ve daha okunabilir kod üretmek için ayraç kullanmanız gerekir.Örneğin, parantez aşağıda gösterildiği gibi düzeltin ve önceki örnekte açıklığa kavuşturmak için kullanabilirsiniz:

( p == 0 ) ? ( p += 1 ) : ( p += 2 )

Ayrıca bkz.

Başvuru

C işleçleri