Artikel ini menyediakan tutorial komprehensif untuk membantu anda mempelajari tentang persekutuan dan keutamaan pengendali dalam C.
Keutamaan Operator dalam C
Keutamaan pengendali menerangkan urutan di mana beberapa operator dinilai semasa menilai ungkapan. Sebagai contoh, jika ungkapan mempunyai kedua-dua pengendali penambahan dan pendaraban, yang manakah harus dinilai dahulu? Jawapannya mudah, C mengikut peraturan tertentu untuk menyelesaikan kekaburan tersebut, biasanya dikenali sebagai keutamaan pengendali . Dalam C, keutamaan pengendali dikelaskan kepada 17 tahap, bermula daripada operator unary hingga operator bersyarat ternary. Kebanyakan pengendali yang digunakan seperti pengendali aritmetik, pengendali hubungan, pengendali logik dan pengendali bitwise mengikut piawaian C keutamaan pengendali protokol.
Keutamaan peraturan menentukan pengendali yang mempunyai keutamaan yang lebih tinggi daripada yang lain apabila menilai ungkapan. Beberapa jenis operator dalam bahasa pengaturcaraan C mempunyai tahap yang berbeza-beza keutamaan . Sebagai contoh, pengendali unari mempunyai keutamaan yang lebih besar daripada pengendali binari. Berikut ialah senarai operator yang diisih mengikut tertib menaik keutamaan :
Operator | Maksud Operator | pergaulan |
() [] -> . |
Panggilan berfungsi Rujukan unsur tatasusunan Pemilihan ahli tidak langsung Pemilihan ahli secara langsung |
Kiri ke kanan |
! ~ + – ++ — & * saiz (jenis) |
Penafian logik Pelengkap bitwise (1). Tambah unary unary tolak Kenaikan Penurunan Dereference (Alamat) Rujukan penunjuk Mengembalikan saiz objek Siaran taip (penukaran) |
Kanan ke kiri |
* / % |
gandakan Bahagikan Baki |
Kiri ke kanan |
+ – |
Perduaan tambah(Tambahan) Tolak binari(tolak) |
Kiri ke kanan |
<< >> |
Syif kiri Anjakan kanan |
Kiri ke kanan |
< <= > >= |
Kurang daripada Kurang daripada atau sama Lebih besar daripada Lebih besar daripada atau sama |
Kiri ke kanan |
== != |
Sama dengan Tidak sama dengan |
Kiri ke kanan |
& | Bitwise DAN | Kiri ke kanan |
^ | Eksklusif bitwise ATAU | Kiri ke kanan |
| | Bitwise ATAU | Kiri ke kanan |
&& | Logik DAN | Kiri ke kanan |
|| | Logik ATAU | Kiri ke kanan |
?: | Operator Bersyarat | Kanan ke kiri |
= *= /= %= += -= &= ^= |= <<= >>= |
Tugasan mudah Tetapkan produk Berikan quotient Tetapkan baki Berikan jumlah Tetapkan perbezaan Berikan bitwise DAN Berikan XOR bitwise Tetapkan bitwise ATAU Tetapkan syif kiri Tetapkan syif kanan |
Kanan ke kiri |
, | Pemisah ungkapan | Kiri ke kanan |
Peraturan ini membimbing pengkompil tentang cara menilai ungkapan dengan berbilang pengendali dalam ungkapan yang sama. Operator pendaraban, misalnya, mempunyai keutamaan yang lebih besar daripada operator penambahan dalam persamaan A + B * C, selaras dengan keutamaan peraturan. Oleh itu, pengkompil akan menilai terlebih dahulu ungkapan B * C sebelum menambah A pada hasilnya.
Mari kita lihat contoh keutamaan pengendali melalui kod.
#includeint utama ( ) {
int a = 43 , b = sebelas , c = 16 , d = 31 ;
int hasil = ++ a * b -- + c / -- d ;
printf ( 'a = %d \n ' , a ) ;
printf ( 'b = %d \n ' , b ) ;
printf ( 'c = %d \n ' , c ) ;
printf ( 'd = %d \n ' , d ) ;
printf ( 'hasil = %d \n ' , hasil ) ;
kembali 0 ;
}
Empat pembolehubah a, b, c, dan d, diisytiharkan dalam kod di atas, dan nilai awalnya ialah 43, 11, 16, dan 31 dengan sewajarnya. Kemudian, ia menggunakan pelbagai operator aritmetik dan tugasan kepada pembolehubah ini dalam ungkapan. Ungkapan meningkatkan nilai a dengan menggunakan operator pra-kenaikan ++a, mendarabkan hasil dengan pengendali pasca-penurunan b–, dan kemudian menambah hasil kepada pembahagi c dengan nilai pra-penurunan d. (menggunakan operator pra-penurunan –d). Hasil pembolehubah kemudiannya digunakan untuk menyimpan jumlah hasil ungkapan ini.
Pengeluaran
Pergaulan dalam C
pergaulan merujuk kepada susunan pengendali dinilai semasa ungkapan dengan keutamaan yang sama. Kiri ke kanan dan kanan ke kiri pergaulan ialah dua bentuk persekutuan dalam C. Jika dua operator mempunyai yang sama keutamaan , mereka dinilai dari kiri ke kanan mengikut konsep kiri-ke-kanan pergaulan . Namun begitu, jika keutamaan yang sama diperhatikan, pengendali dinilai dari kanan ke kiri mengikut kanan ke kiri pergaulan .
Sebagai contoh, pengendali kenaikan ++ mempunyai kanan-ke-kiri pergaulan , yang bermaksud kenaikan pengendali dinilai selepas pembolehubah. Manakala logik DAN pengendali mempunyai kiri-ke-kanan pergaulan , yang bermaksud pengendali dinilai dari kiri ke kanan.
#includeint main() {
int a = 6 , b = 3 , c = 2 ;
int hasil = a * b / c;
printf( 'hasil = %d \n ' , hasil);
kembali 0 ;
}
Tiga pembolehubah a, b, dan c diisytiharkan dalam kod ini, dan ia dimulakan kepada 6, 3, dan 2 masing-masing. Kemudian, ia menggunakan operasi darab dan bahagi kepada pembolehubah ini dalam ungkapan. Pendaraban dan pembahagian disusun dari kiri ke kanan dalam C berdasarkan mereka pergaulan kerana mereka mempunyai tahap keutamaan yang sama. Ini menunjukkan bahawa operasi bahagi didahulukan, diikuti dengan operasi pendaraban apabila menilai ungkapan, a * b / c.
Pengeluaran
Kesimpulan
Keutamaan pengendali dan pergaulan adalah konsep penting dalam pengaturcaraan C yang membantu menentukan susunan pelaksanaan ungkapan. Operator dengan yang tertinggi keutamaan tahap dinilai terlebih dahulu dan pergaulan peraturan membantu menentukan susunan apabila berbilang operator dengan keutamaan yang sama digunakan. Kefahaman keutamaan pengendali dan pergaulan adalah penting apabila mereka bentuk atur cara yang kompleks, dan ia membantu menghasilkan kod yang lebih bersih dan cekap dengan ralat yang lebih sedikit.