Monday, December 17, 2018

PRECEDENCE and ASSOCIATIVE

Prioritas operator menentukan operator mana yang dilakukan pertama kali dalam ekspresi dengan lebih dari satu operator dengan preseden yang berbeda. Misalnya 10 + 20 * 30 dihitung sebagai 10 + (20 * 30) dan bukan sebagai (10 + 20) * 30.

Asosiatif digunakan ketika dua operator dari preseden yang sama muncul dalam sebuah ekspresi. Asosiatif dapat berupa Kiri ke Kanan atau Kanan ke Kiri. Misalnya ‘*’ dan ‘/’ memiliki prioritas yang sama dan asosiasinya adalah Kiri ke Kanan, sehingga ungkapan "100/10 * 10" dianggap sebagai "(100/10) * 10".

Presedensi dan Asosiatif adalah dua karakteristik operator yang menentukan urutan evaluasi subekspresi tanpa adanya tanda kurung.

Presedensi menjelaskan urutan pelaksanaan operator berdasarkan prioritasnya. Operator dengan prioritas tertinggi awalnya akan dieksekusi.

Asosiatif menjelaskan urutan eksekusi operator berdasarkan lokasinya di dalam ekspresi (dari urutan kiri atau kanan). Asosiatif akan digunakan untuk operator dengan tingkat prioritas yang sama.

1) Asosiatif hanya digunakan ketika ada dua atau lebih operator dari preseden yang sama.
Poin yang perlu diperhatikan adalah associativity tidak menentukan urutan operan operator tunggal yang dievaluasi. Sebagai contoh perhatikan program berikut, associativity dari operator + adalah kiri ke kanan, tetapi itu tidak berarti f1 () selalu dipanggil sebelum f2 (). Output dari program berikut ini adalah ketergantungan compiler pada kenyataannya. Lihat ini untuk detailnya.

2) Semua operator dengan presedensi yang sama memiliki associativity yang sama
Ini perlu, jika tidak, tidak akan ada cara apa pun bagi penyusun untuk memutuskan urutan evaluasi ekspresi yang memiliki dua operator dengan preseden yang sama dan asosiatifitas yang berbeda. Misalnya + dan - memiliki associativity yang sama.

3) Presedensi dan associativity dari postfix ++ dan prefix ++ berbeda
Presedensi dari postfix ++ lebih dari awalan ++, asosiasi mereka juga berbeda. Asosiatif postfix ++ adalah kiri ke kanan dan associativity of prefix ++ tepat ke kiri. Lihat ini sebagai contoh.

4) Koma memiliki prioritas terendah di antara semua operator dan harus digunakan dengan hati-hati. Sebagai contoh perhatikan program berikut, hasilnya adalah 1. Lihat ini dan ini untuk lebih jelasnya.

5) Tidak ada rantai operator perbandingan dalam C
Dalam Python, ekspresi seperti "c> b> a" diperlakukan sebagai "a> b dan b> c", tetapi jenis rangkaian ini tidak terjadi di C. Sebagai contoh, perhatikan program berikut. Output dari program berikut adalah "FALSE".





No comments:

Post a Comment