C # Prioritas Dan Asosiatif Operator: Definisi dan Contoh

Dalam tutorial ini kita akan belajar tentang prioritas operator dan asosiatif dalam C #. Ini akan memberi kita gambaran tentang bagaimana ekspresi dievaluasi oleh kompilator C #.

C # Operator Diutamakan

Prioritas operator adalah sekumpulan aturan yang menentukan bagaimana ekspresi dievaluasi. Dalam C #, setiap operator C # memiliki prioritas yang ditetapkan dan berdasarkan prioritas ini, ekspresi dievaluasi.

Misalnya , prioritas (*)operator perkalian lebih tinggi dari pada (+)operator penjumlahan . Oleh karena itu, operasi yang melibatkan perkalian dilakukan sebelum penjumlahan.

Perhatikan pernyataan di bawah ini.

 int x = 4 + 3 * 5;

Berapa nilai x setelah menjalankan pernyataan ini?

Operand 3dikaitkan dengan +dan *. Seperti yang dinyatakan sebelumnya, perkalian memiliki prioritas yang lebih tinggi daripada penjumlahan. Jadi, operasi 3 * 5yang dilakukan bukan 4 + 3. Nilai variabel x akan menjadi 19.

Jika penjumlahan akan memiliki prioritas yang lebih tinggi, 4 + 3akan dievaluasi terlebih dahulu dan nilai x akan menjadi 35.

Tabel Urutan Operator

Semakin tinggi prioritas operator, semakin tinggi tampilannya di tabel

C # Operator Diutamakan
Kategori Operator
Increment dan Decrement Postfix ++, -
Prefix Increment, Decrement dan Unary ++, -, +, -,!, ~
Perkalian *, /,%
Aditif +, -
Bergeser <>
Relasional <,,> =
Persamaan ==,! =
Bitwise DAN &
Bitwise XOR ^
Bitwise ATAU |
DAN logis &&
Logis ATAU ||
Ternary ? :
Tugas =, + =, - =, * =, / =,% =, & =, | =, =, <> =

Operator penugasan memiliki prioritas terendah sedangkan operator kenaikan dan penurunan postfix memiliki prioritas tertinggi.

Contoh 1: Prioritas Operator

 using System; namespace Operator ( class OperatorPrecedence ( public static void Main(string() args) ( int result1; int a = 5, b = 6, c = 4; result1 = --a * b - ++c; Console.WriteLine(result1); bool result2; result2 = b>= c + a; Console.WriteLine(result2); ) ) ) 

Saat kita menjalankan program, outputnya adalah:

 19 Salah

Mari kita pahami bagaimana ekspresi dievaluasi dalam program.

Prioritas --dan ++lebih tinggi dari *, dan prioritas *lebih tinggi dari -. Oleh karena itu pernyataannya,

 hasil1 = --a * b - ++ c;

setara dengan

 hasil1 = ((--a) * b) - (++ c);

Ekspresi di dalam tanda kurung selalu dievaluasi terlebih dahulu, apa pun prioritas operator di luarnya.

  • Pada awalnya, (--a) dievaluasi sehingga menjadi 4.
  • Kemudian (++ c) dievaluasi sehingga menghasilkan 5.
  • Sekarang, (a * b) dievaluasi menghasilkan 24.
  • Akhirnya, pengurangan dilakukan menghasilkan 19.
  • Oleh karena itu, nilai akhir result1 adalah 19.

Pada ekspresi berikutnya, prioritas +lebih tinggi dari >=. Jadi, c dan a ditambahkan terlebih dahulu dan jumlahnya dibandingkan dengan b untuk menghasilkan false.

Asosiasi Operator di C #

Pada bagian sebelumnya, kita membahas tentang prioritas operator. Jika digunakan dua operator dengan prioritas berbeda, operator dengan prioritas lebih tinggi dievaluasi terlebih dahulu.

Tetapi bagaimana jika kedua operator memiliki prioritas yang sama?

Dalam kasus seperti itu, ekspresi dievaluasi berdasarkan asosiasi operator (kiri ke kanan atau kanan ke kiri).

Sebagai contoh:

int a = 5, b = 6, c = 3; hasil int = a * b / c;

Di sini, baik *dan /memiliki hak yang sama. Tetapi karena asosiasi operator ini dari kiri ke kanan , a * bdievaluasi terlebih dahulu dan kemudian dilakukan pembagian. Hasil akhir dari ekspresi ini adalah 10.

Dalam contoh khusus ini, asosiativitas tidak terlalu penting. Karena meskipun pembagian dilakukan sebelum perkalian, hasilnya tidak akan terpengaruh.

Mari kita lihat contoh lainnya.

int a = 5, b = 6, c = 3; a = b = c;

Keterkaitan =operator adalah dari kanan ke kiri . Jadi nilai dari c (yaitu 3) ditugaskan ke b, dan kemudian nilai b ditugaskan ke a. Jadi setelah menjalankan pernyataan ini, nilai a, b dan c akan menjadi 3.

Tabel di bawah ini menunjukkan asosiasi operator C #:

C # Asosiasi operator
Kategori Operator Asosiatif
Increment dan Decrement Postfix ++, - Kiri ke kanan
Prefix Increment, Decrement dan Unary ++, -, +, -,!, ~ Kanan ke kiri
Perkalian *, /,% Kiri ke kanan
Aditif +, - Kiri ke kanan
Bergeser <> Kiri ke kanan
Relasional <,,> = Kiri ke kanan
Persamaan ==,! = Kiri ke kanan
Bitwise DAN & Kiri ke kanan
Bitwise XOR ^ Kiri ke kanan
Bitwise ATAU | Kiri ke kanan
DAN logis && Kiri ke kanan
Logis ATAU || Kiri ke kanan
Ternary ? : Kanan ke kiri
Tugas =, + =, - =, * =, / =,% =, & =, | =, =, <> = Kanan ke kiri

Hampir semua operator memiliki asosiasi dari kiri ke kanan. Operator yang memiliki asosiasi dari kanan ke kiri adalah:

  • Operator unary
  • Awalan Increment dan Decrement Operator
  • Operator Ternary
  • Operator Penugasan

Contoh 2: Asosiatif Operator

 using System; namespace Operator ( class OperatorPrecedence ( public static void Main(string() args) ( int a = 5, b = 6, c = 3; int result = a * b / c; Console.WriteLine(result); a = b = c; Console.WriteLine("a = (0), b = (1), c = (2)", a, b, c); ) ) ) 

Saat kita menjalankan program, outputnya adalah:

 10 a = 3, b = 3, c = 3

Artikel yang menarik...