Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

C# Operator Precedence and Associativity

Keutamaan dan Keterkaitan Operator C#

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

Keutamaan Operator C#

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

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

Perhatikan pernyataan di bawah ini.

int x = 4 + 3 * 5;

Berapa nilai x setelah menjalankan pernyataan ini?

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

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


Tabel Prioritas Operator

Semakin tinggi prioritas operator, semakin tinggi muncul di tabel

Keutamaan Operator C#
Kategori Operator
Peningkatan dan Penurunan Postfix ++, --
Peningkatan Awalan, Penurunan, dan Unary ++, --, +, -, !, ~
Perkalian *, /, %
Tambahan +, -
Pergeseran <<,>>
Relasional <, <=,>,>=
Kesetaraan ==, !=
Bitwise DAN &
Bitwise XOR ^
Bitwise ATAU |
Logis DAN &&
Logis ATAU ||
Terner ? :
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
False

Mari kita pahami bagaimana ekspresi dievaluasi dalam program.

Prioritas -- dan ++ lebih tinggi dari * , dan prioritas * lebih tinggi dari - . Demikian pernyataan,

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

setara dengan

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

Ekspresi di dalam tanda kurung selalu dievaluasi terlebih dahulu tidak peduli apa prioritas operator di luarnya.

Dalam 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 telah membahas tentang prioritas operator. Jika dua operator dengan prioritas berbeda digunakan, operator dengan prioritas lebih tinggi dievaluasi terlebih dahulu.

Tapi bagaimana jika kedua operator memiliki prioritas yang sama?

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

Misalnya:

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

Di sini, keduanya * dan / memiliki keutamaan yang sama. Tetapi karena asosiatifitas operator ini adalah dari kiri ke kanan , a * b dievaluasi terlebih dahulu dan kemudian dilakukan pembagian. Hasil akhir dari ekspresi ini adalah 10 .

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

Mari kita lihat contoh lain.

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

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

Tabel di bawah ini menunjukkan asosiatifitas operator C#:

C# Asosiatif operator
Kategori Operator Asosiasi
Peningkatan dan Penurunan Postfix ++, -- Kiri ke Kanan
Peningkatan Awalan, Penurunan, dan Unary ++, --, +, -, !, ~ Kanan ke Kiri
Perkalian *, /, % Kiri ke Kanan
Tambahan +, - Kiri ke Kanan
Pergeseran <<,>> Kiri ke Kanan
Relasional <, <=,>,>= Kiri ke Kanan
Kesetaraan ==, != Kiri ke Kanan
Bitwise DAN & Kiri ke Kanan
Bitwise XOR ^ Kiri ke Kanan
Bitwise ATAU | Kiri ke Kanan
Logis DAN && Kiri ke Kanan
Logis ATAU || Kiri ke Kanan
Terner ? : Kanan ke Kiri
Tugas =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=,>>= Kanan ke Kiri

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


Contoh 2:Asosiatifitas 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

Bahasa C

  1. C# Kata Kunci dan Pengidentifikasi
  2. C# Operator
  3. C# ternary (? :) Operator
  4. C# Kelas dan Objek
  5. C# kelas abstrak dan metode
  6. C# Kelas Parsial dan Metode Parsial
  7. C# kelas dan metode tersegel
  8. Operator di C++ dengan Contoh:Apa itu, Jenis dan Program
  9. C - Konstanta dan Literal
  10. C - Masukan dan Keluaran