Dalam tutorial ini kita akan belajar mengenai keutamaan operator dan kaitan dalam C #. Ini akan memberi kita idea tentang bagaimana ungkapan dinilai oleh penyusun C #.
C # Keutamaan Operator
Keutamaan operator adalah sekumpulan peraturan yang menentukan bagaimana ekspresi dinilai. Dalam C #, setiap operator C # mempunyai keutamaan yang ditetapkan dan berdasarkan keutamaan ini, ungkapan dinilai.
Sebagai contoh , keutamaan (*)
operator pendaraban lebih tinggi daripada keutamaan (+)
operator penambahan . Oleh itu, operasi yang melibatkan pendaraban dilakukan sebelum penambahan.
Lihat pernyataan di bawah.
int x = 4 + 3 * 5;
Berapakah nilai x setelah melaksanakan penyataan ini?
Operan 3
dikaitkan dengan +
dan *
. Seperti yang dinyatakan sebelumnya, pendaraban mempunyai keutamaan yang lebih tinggi daripada penambahan. Jadi, operasi 3 * 5
itu dilakukan bukannya 4 + 3
. Nilai pemboleh ubah x akan 19
.
Sekiranya penambahan mempunyai keutamaan yang lebih tinggi, 4 + 3
akan dinilai terlebih dahulu dan nilai x akan menjadi 35
.
Jadual Keutamaan Operator
Semakin tinggi keutamaan pengendali, semakin tinggi ia muncul dalam jadual
C # Keutamaan OperatorKategori | Pengendali |
---|---|
Kenaikan dan Penurunan Postfix | ++, - |
Kenaikan Awalan, Penurunan dan Tidak Berguna | ++, -, +, -,!, ~ |
Berganda | *, /,% |
Bahan tambah | +, - |
Pergeseran | <> |
Perhubungan | <,,> = |
Kesaksamaan | ==,! = |
Sedikit demi sedikit DAN | & |
Bitwise XOR | ^ |
Sedikit demi sedikit ATAU | | |
Logik DAN | && |
Logik ATAU | || |
Ternari | ? : |
Tugasan | =, + =, - =, * =, / =,% =, & =, | =, =, <> = |
Pengendali penugasan mempunyai keutamaan terendah sementara pengendali kenaikan dan penurunan pasca perbaikan mempunyai keutamaan tertinggi.
Contoh 1: Keutamaan 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); ) ) )
Semasa kita menjalankan program, outputnya adalah:
19 Salah
Mari kita fahami bagaimana ungkapan dinilai dalam program.
Keutamaan --
dan ++
lebih tinggi daripada *
, dan keutamaan *
lebih tinggi daripada -
. Oleh itu kenyataannya,
hasil1 = --a * b - ++ c;
adalah bersamaan dengan
hasil1 = ((--a) * b) - (++ c);
Ekspresi dalam kurungan selalu dinilai terlebih dahulu tidak kira apa keutamaan operator di luarnya.
- Pada mulanya, (--a) dinilai menghasilkan
4
. - Kemudian (++ c) dinilai menghasilkan
5
. - Sekarang, (a * b) dinilai menghasilkan
24
. - Akhirnya, pengurangan dilakukan sehingga menghasilkan
19
. - Oleh itu nilai akhir hasil1 akan menjadi
19
.
Dalam ungkapan seterusnya, keutamaan +
lebih tinggi daripada >=
. Jadi, c dan a ditambahkan terlebih dahulu dan jumlahnya dibandingkan dengan b untuk menghasilkan false
.
Keterkaitan Pengendali dalam C #
Pada bahagian sebelumnya, kami membincangkan mengenai keutamaan pengendali. Sekiranya dua operator dengan keutamaan yang berbeza digunakan, pengendali dengan keutamaan yang lebih tinggi dinilai terlebih dahulu.
Tetapi bagaimana jika kedua-dua pengendali mempunyai keutamaan yang sama?
Dalam kes sedemikian, ungkapan dinilai berdasarkan kaitan operator (kiri ke kanan atau kanan ke kiri).
Sebagai contoh:
int a = 5, b = 6, c = 3; hasil int = a * b / c;
Di sini, keduanya *
dan /
mempunyai keutamaan yang sama. Tetapi kerana kaitan operator ini dari kiri ke kanan , a * b
dinilai terlebih dahulu dan kemudian pembahagian dilakukan. Hasil akhir ungkapan ini adalah 10
.
Dalam contoh khusus ini, persatuan tidak begitu penting. Kerana walaupun pembahagian dilakukan sebelum pendaraban, hasilnya tidak akan terpengaruh.
Mari kita lihat contoh lain.
int a = 5, b = 6, c = 3; a = b = c;
Keterkaitan =
operator adalah dari kanan ke kiri . Jadi nilai c (iaitu 3
) diberikan kepada b, dan kemudian nilai b diberikan kepada a. Jadi setelah melaksanakan penyataan ini, nilai a, b dan c akan menjadi 3
.
Jadual di bawah menunjukkan kaitan operator C #:
C # Keterkaitan pengendaliKategori | Pengendali | Pergaulan |
---|---|---|
Kenaikan dan Penurunan Postfix | ++, - | Kiri ke kanan |
Kenaikan Awalan, Penurunan dan Tidak Berguna | ++, -, +, -,!, ~ | Kanan ke kiri |
Berganda | *, /,% | Kiri ke kanan |
Bahan tambah | +, - | Kiri ke kanan |
Pergeseran | <> | Kiri ke kanan |
Perhubungan | <,,> = | Kiri ke kanan |
Kesaksamaan | ==,! = | Kiri ke kanan |
Sedikit demi sedikit DAN | & | Kiri ke kanan |
Bitwise XOR | ^ | Kiri ke kanan |
Sedikit demi sedikit ATAU | | | Kiri ke kanan |
Logik DAN | && | Kiri ke kanan |
Logik ATAU | || | Kiri ke kanan |
Ternari | ? : | Kanan ke kiri |
Tugasan | =, + =, - =, * =, / =,% =, & =, | =, =, <> = | Kanan ke kiri |
Hampir semua pengendali mempunyai kaitan dari kiri ke kanan. Pengendali yang mempunyai kaitan dari kanan ke kiri adalah:
- Pengendali yang tidak berfungsi
- Pengendali Peningkatan dan Penurunan Awalan
- Pengendali Ternary
- Pengendali Tugasan
Contoh 2: Keterkaitan Pengendali
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); ) ) )
Semasa kita menjalankan program, outputnya adalah:
10 a = 3, b = 3, c = 3