Halo dan selamat datang. Sekarang kita telah berbicara tentang
semua operator utama, yang fundamental, yang aneh, kita harus
berbicara tentang konsep kecil tentang prioritas operator ini.
Jadi ini pada dasarnya berperan ketika bagaimana Anda mengevaluasi urutan operator ini.
Jadi prioritas operator menentukan pengelompokan istilah dan ekspresi dan
memutuskan bagaimana ekspresi dievaluasi.
Sekarang Anda benar-benar tidak perlu memahami semua ini jika
Anda menggunakan tanda kurung yang akan kita bahas sebentar lagi, tetapi Anda harus memahami konsep
ini karena ini adalah bagian dari bahasa itu adalah bagian dari pemahaman bahasa.
Jadi prioritas akan menentukan urutan evaluasi ketika dua
operator berbagi operan.
Dan ini akan menjadi jelas dengan sebuah contoh.
Jadi misalnya, operator perkalian memiliki prioritas lebih tinggi daripada
operator tambahan.
Operator tertentu akan memiliki urutan evaluasi yang berbeda. Jadi, jika Anda melakukan pernyataan majemuk
di mana Anda
melakukan banyak perhitungan yang berbeda, misalnya, 7 ditambah 3 kali 2.
Ini dapat memiliki beberapa
hasil, penambahan dan Anda melakukan perkalian.
Anda perlu memahami apakah saya harus melakukan penjumlahan terlebih dahulu atau haruskah saya melakukan perkalian terlebih dahulu karena tergantung
pada apa yang Anda lakukan terlebih dahulu mengubah hasilnya.
Jadi misalnya, x ini sama dengan 7 ditambah 3 kali
2, hasilnya bisa 13 atau 20 tergantung pada
urutan saat Anda mengevaluasi setiap operan.
Jadi urutan pelaksanaan berbagai operasi dapat membuat perbedaan besar.
Dan inilah mengapa Anda perlu memahami prioritas.
C memberikan aturan khusus untuk memilih apa yang harus dilakukan terlebih dahulu.
Dalam hal ini, apakah saya melakukan perkalian plus. Nah, c akan memberitahu Anda apa yang akan terjadi.
Idealnya jika Anda membungkusnya dalam tanda kurung, Anda akan memberi tahu apa yang harus dilakukan,
Anda akan membuat keputusan itu. Tetapi jika Anda tidak memasukkannya ke dalam
tanda kurung, bahasa pemrograman akan membuat keputusan untuk Anda.
Jadi di c, perkalian akan memiliki prioritas lebih
tinggi daripada operator penjumlahan. Jadi apa yang akan terjadi adalah hasilnya akan menjadi 13.
Sekarang Anda bisa mengatakan 7 ditambah 3, yaitu 10
dan kemudian dikalikan dengan 2, hasilnya adalah 20.
Atau Anda bisa melakukan 7 ditambah 3 kali 2, yaitu 7 ditambah 6 yaitu 13.
Jadi begitulah cara Anda dapat memiliki nilai yang berbeda.
Itu ambigu. Apakah Anda melakukan plus terlebih dahulu atau Anda melakukan perkalian terlebih dahulu.
Untungnya, sekali lagi, itu ditentukan oleh bahasa. Tetapi Anda dapat melihat bagaimana ada dua hasil yang berbeda.
7 ditambah 3 kali 2
atau 7 ditambah 3 kali 2. Anda melihat jeda di sana.
Sekarang c akan melakukan yang terakhir. Ini akan melakukan perkalian terlebih dahulu karena itu
memiliki prioritas yang lebih tinggi.
Jadi itu akan menjadi 3 kali 2, yaitu 6 dan kemudian akan ditambahkan ke 7.
Jadi hasil x akan menjadi 13 karena tanda bintang
memiliki prioritas lebih tinggi daripada penambahan.
Jadi ada aturan untuk setiap operator, operator mana
yang didahulukan dari yang lain.
Ada tingkat prioritas.
Dan perkalian dan pembagian lebih diutamakan daripada penjumlahan dan pengurangan.
Jadi itu yang mereka lakukan pertama, misalnya.
Anda dapat menghindari semua prioritas ini dan meminta bahasa memutuskan untuk
Anda jika Anda memberikan tanda kurung.
Tanda kurung akan selalu mengelompokkan ekspresi
dengan prioritas tertinggi. Jadi, jika saya mengatakan 7 ditambah 3 dan saya menyertakannya dalam
tanda kurung, maka penjumlahan akan selalu dilakukan terlebih dahulu.
Jika saya mengatakan
3 kali 2 dan saya menyertakannya dalam tanda
kurung, itu selalu akan melakukan perkalian dan kemudian menambahkan apa pun di luar tanda kurung.
Jadi, Anda harus benar-benar menggunakan tanda kurung. Selalu gunakan tanda kurung.
Jika tidak, bahasa akan memutuskan untuk Anda. Anda harus mengingat semua tingkat
prioritas yang sulit dilakukan seperti yang akan saya tunjukkan di tabel berikutnya.
Ada banyak operator yang berbeda dan Anda harus tahu prioritas
untuk semua operator yang berbeda ini.
Jadi itu bisa menjadi sangat sangat membingungkan.
Ini mirip dengan yang Anda tahu apakah Anda membiarkan bahasa melakukan konversi implisit untuk Anda atau
Anda melakukannya dengan konversi eksplisit dengan operator pemeran, jenis ide yang sama
di sini, cukup gunakan tanda kurung.
Jadi jika kita melihat tabel ini, yang akan kita lihat sebentar, saya rasa karena saya
ingin berbicara tentang asosiatif terlebih dahulu.
Associativity berkaitan dengan preseden karena apa yang terjadi jika
dua operator memiliki preseden yang sama. Lalu bagaimana cara mengetahui urutannya.
Nah, maka Anda menerapkan asosiatif. Jadi setiap kali operator
memiliki tingkat prioritas yang sama, maka Anda menerapkan aturan tambahan.
Jadi asosiatif pada dasarnya adalah apakah Anda mulai dari
sisi kiri atau tidak dan pergi ke kanan atau kanan ke kiri.
Jadi, jika Anda berbagi operan dan keduanya dieksekusi dalam
urutan yang sama, Anda akan mengeksekusinya dalam urutan
pernyataan berdasarkan aturan asosiatif. Jadi untuk sebagian besar
operator, urutannya dari kiri ke kanan. Jadi izinkan saya menunjukkan sebuah contoh.
Jika Anda mengatakan 1 sama dengan 2 tidak sama dengan
3, sama dengan dan operator yang tidak sama tanda seru
sama memiliki prioritas yang sama.
Jadi dalam hal ini kita memiliki ambiguitas. Kita punya masalah.
Kami tidak tahu apa yang harus dievaluasi terlebih dahulu. Kami tidak tahu apakah kami perlu melakukan 1
sama dengan 2 atau
2 tidak sama dengan 3 dan itu penting karena Anda melakukan ekspresi Boolean.
Ini adalah ekspresi boolean di sini, jadi ini kembali ke benar atau salah.
Jadi yang akan Anda lakukan di sini adalah menerapkan asosiatif.
Associativity dari keduanya sama sama dan tidak sama kiri ke kanan.
Anda pertama-tama akan melakukan 1 sama dengan 2, itu akan salah.
Dan kemudian Anda akan mengatakan salah, yang
tidak sama dengan
3, yang sebenarnya tidak. Jadi 1 sama dengan
2 dan itu tidak sama dengan 3.
Jadi hasilnya akan salah. Jadi ekspresi di sebelah kiri dieksekusi terlebih
dahulu dan bergerak ke kanan.
Jadi bagaimana Anda ingin memikirkannya pada dasarnya sama dengan tanda kurung ini.
Pertama, Anda akan mengevaluasi satu sama dengan 2.
Dan kemudian jika itu mengevaluasi benar atau salah, Anda akan mengatakan bahwa itu sama dengan 3.
Dan ini membingungkan karena tidak memiliki
nilai benar atau salah.
Tapi 1 sama dengan ingat itu operator perbandingan, itu bukan operator penugasan.
Dan kami tidak menggunakan variabel di sini, jadi ini lebih membingungkan.
Tetapi jika Anda memasukkan angka-angka ini
ke dalam variabel, Anda hanya akan mengatakan seperti, jika x sama dengan y, jadi
jika x adalah 1 dan y adalah 2, itu akan mengevaluasi 2 salah.
Karena keduanya tidak setara. Dan kemudian jika 3 adalah
variabel lain z yang sama dengan
3, Anda akan mengatakan apakah x sama dengan y salah,
z sama dengan 3. Jadi salah
tidak sama dengan 3. Jadi itu akan salah.
Jadi 1 sama dengan 2 dieksekusi terlebih dahulu, hasilnya lagi 0 salah.
Kemudian 0 tidak sama dengan 3, dieksekusi menghasilkan 1 benar.
Jadi saya mengatakan false pada awalnya, tetapi jelas 0 tidak sama dengan
3, yang semuanya akan dinilai salah.
Semuanya akan bernilai benar, saya minta maaf karena 0 tidak sama dengan 3.
Jadi 0 tidak sama dengan 3 Saya mengatakan itu salah karena mereka tidak sama, tetapi
itu berarti bahwa itu benar-benar dievaluasi menjadi benar.
Jadi cukup rapi di sana. Sekarang inilah tabel kami yang
mengatakan semua aturan prioritas dan asosiatif dan sangat sulit untuk mengingatnya.
Jadi sekali lagi, apa yang Anda lakukan, gunakan tanda kurung.
Tapi ini tabelnya. Tingkat keutamaan tertinggi berada
di atas, sehingga operator postfix memiliki tingkat preferensi tertinggi.
Dan jika Anda menggunakan salah satu dari mereka dalam ekspresi yang sama, maka Anda
membaca dari kiri ke kanan.
Jadi operator postfix, hal-hal seperti tanda
kurung adalah prioritas tertinggi.
Jadi, setiap kali Anda memasukkan sesuatu dalam tanda kurung, itu akan berlaku.
Tetapi Anda memiliki tanda kurung dan kemudian
Anda memiliki operator postfix. Kami belum berbicara
tentang beberapa hal penunjuk, yang lebih besar dari tanda hubung ini,
tetapi kami tahu sekarang tentang plus plus
dan minus minus yang merupakan
postfix yang memiliki prioritas tertinggi tertinggi. Operator unary seperti plus minus,
tanda seru untuk not, tilde untuk bitwise, plus plus minus
minus dan kemudian operator casting disebut sebagai operator unary karena hanya memiliki satu operand.
Dan kemudian operator asterisk adalah operator pointer. Ampersand adalah bitwise dan
sizeof.
Mereka memiliki prioritas tertinggi berikutnya.
Tapi di sini Anda benar-benar membaca dari kanan
ke kiri untuk mengevaluasi jika Anda memiliki dua pernyataan status baris yang sama.
Dan sekali lagi kami hanya memesan. Anda harus mengetahui urutan ini dan menghafalnya. Sangat sulit untuk dilakukan, tetapi
saya ingin menunjukkannya kepada Anda, hanya ingin
memiliki sedikit ilustrasi untuk menunjukkan beberapa tabel. Operatornya banyak.
Jadi ada banyak tingkat kehadiran, dan ada asosiasi untuk sebagian besar seperti yang kami katakan
sebelumnya dari kiri ke kanan.
Anda hanya memiliki asosiatif kiri kanan untuk operator unary.
Jadi operator bitwise mengikuti ke bawah, semua dari
kiri ke kanan. Operator ternary bersyarat dari kanan ke kiri.
Operator penugasan selalu berada di bawah. Itu selalu dievaluasi terakhir.
Dan kemudian jika mereka sama, yang lain di sana Anda evaluasi dari kanan ke kiri.
Dan kemudian koma juga disebut sebagai operator. Itu kiri ke kanan.
Konsep lain meskipun prioritas dan asosiatif
yang tidak akan kita bahas
dengan contoh-contoh lain ini. Kami akan berakhir menggunakan tanda kurung
sepanjang waktu, dan itulah yang ingin Anda lakukan.
Tetapi sekali lagi, jika Anda ingin memahami bahasa sepenuhnya, Anda ingin memahami konsep-konsep ini, itulah sebabnya saya menceritakannya kepada Anda.
Tidak ada yang benar-benar dapat mengklaim bahwa mereka tahu bahasa jika mereka tidak mengetahui beberapa detail seperti ini.
Tapi gunakan tanda kurung sebanyak yang Anda bisa. Terima kasih.