Rumah >pembangunan bahagian belakang >C++ >Apakah yang diutamakan pengendali dan jadual persekutuan sebenarnya memberitahu kami tentang penilaian ekspresi dalam bahasa pengaturcaraan?
Keutamaan Operator dan Asosiasi: Definisi dan Hubungan dengan Susunan Penilaian
Pengenalan
Dalam pengaturcaraan bahasa, keutamaan operator dan persekutuan menentukan susunan pengendali dinilai. Walaupun banyak buku teks pengaturcaraan menyediakan jadual yang menyenaraikan sifat-sifat ini, persoalan timbul mengenai tafsirannya dan sumber definisinya.
Soalan
Jawapan
Keutamaan Pengendali dan Definisi Asosiasi
Keutamaan dan pergaulan pengendali ditakrifkan dalam standard bahasa itu sendiri. Tatabahasa standard menentukan peraturan untuk membina ungkapan. Dengan meneliti peraturan ini, keutamaan dan perkaitan pengendali boleh diperolehi.
Sebagai contoh, dalam C , tatabahasa untuk ungkapan aditif (penambahan dan penolakan) adalah seperti berikut:
additive-expression: multiplicative-expression additive-expression + multiplicative-expression additive-expression - multiplicative-expression
Daripada peraturan ini, kita boleh menyimpulkan bahawa ungkapan darab (darab dan bahagi) mempunyai keutamaan yang lebih tinggi daripada ungkapan aditif kerana ia adalah subperaturan bagi ungkapan aditif. Selain itu, perkaitan kiri-ke-kanan pengendali dan - boleh disimpulkan daripada peraturan, yang menyatakan bahawa ungkapan aditif boleh disusun secara rekursif daripada ungkapan aditif lain.
Tertib Penilaian
Adalah penting untuk membezakan antara keutamaan operator dan persekutuan dan susunan penilaian. Walaupun keutamaan dan persekutuan menentukan cara pengendali dikumpulkan, susunan penilaian merujuk kepada urutan di mana ungkapan individu dinilai. Dalam C , penilaian tidak dijamin berlaku secara ketat mengikut keutamaan dan persekutuan.
Sebagai contoh, dalam ungkapan f1() f2() * f3(), operator * mempunyai keutamaan yang lebih tinggi daripada operator, menyebabkan dalam kumpulan f1() (f2() * f3()). Walau bagaimanapun, susunan penilaian tidak ditakrifkan, bermakna f3(), f1(), atau f2() boleh dinilai dahulu.
Pengendali tertentu, seperti operator logik OR (||), lakukan mengenakan urutan pada penilaian operan mereka, membenarkan litar pintas. Dalam x || y, x sentiasa dinilai sebelum y untuk menentukan sama ada penilaian y perlu.
Atas ialah kandungan terperinci Apakah yang diutamakan pengendali dan jadual persekutuan sebenarnya memberitahu kami tentang penilaian ekspresi dalam bahasa pengaturcaraan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!