[Powered by Google Translate] Precendence adalah bagaimana kita menjawab pertanyaan, apa yang harus kita lakukan operasi pertama?
Apakah memecahkan persamaan matematika atau garis parsing kode komputer,
ada aturan ketat diutamakan yang kita mematuhi
sehingga semua komputer dan orang-orang bisa mendapatkan hasil yang sama.
>> Pertama, aturan yang paling penting untuk diingat, terutama dalam pengujian bug,
adalah bahwa kita selalu bekerja dari kurung terdalam luar.
Menggunakan tanda kurung tambahan bisa menjadi taktik debugging membantu,
tapi itu bukan praktik yang baik untuk sampah kode Anda dengan tanda kurung yang tidak diperlukan.
Luangkan waktu untuk mempelajari aturan dasar Operator diutamakan.
>> Aturan umum kedua adalah bahwa ketika operator memiliki priorty yang sama,
Anda hanya memecahkan dari kiri ke kanan.
Ketika berhadapan dengan matematika sederhana kita mulai dengan tanda kurung,
kemudian melakukan perkalian dan pembagian, dan terakhir melakukan penambahan dan pengurangan.
Perkalian dan pembagian memiliki prioritas yang sama,
karena mereka pada dasarnya melakukan operasi yang sama.
Setelah semua divisi hanya mengalikan dengan kebalikan dari nilai.
Demikian pula, pengurangan hanya menambahkan nilai negatif.
>> Mari kita lakukan contoh.
Setelah urutan prioritas, kita akan mulai dengan tanda kurung. Sembilan minus 1.
Itu akan memberi kita 8. Kemudian kita bisa melanjutkan ke divisi dan perkalian.
Kami akan memecahkan dari kiri ke kanan. Jadi 10 dibagi 2 adalah 5.
Kami memiliki 5 kali 8 di sini, dan itu akan memberi kita 40.
Kemudian kita lanjutkan ke urutan berikutnya diutamakan.
Jadi kami pergi dengan 3 ditambah 40 minus 1.
Sekali lagi hanya memecahkan kiri ke kanan,
karena ada prioritas yang sama antara penjumlahan dan pengurangan.
Kita dapat mengatakan 3 ditambah 40 adalah 43, dikurangi 1 adalah 42. Itulah jawaban kami.
>> Ada 2 jenis operator penurunan dan kenaikan;
Bentuk awalan, dan bentuk akhiran.
Bentuk akhiran, i + +, umumnya digunakan dalam untuk loop,
yang berarti bahwa nilai saat ini digunakan dalam ekspresi, dan kemudian bertambah.
Jadi nilai hanya akan berbeda waktu berikutnya variabel yang digunakan.
Di sisi lain, kenaikan atau penurunan awalan berarti bahwa nilai saat ini
bertambah atau decremented pertama, dan kemudian digunakan dalam ekspresi.
>> Mari kita ambil contoh dengan integer x.
Kami akan mengatur itu sama dengan 5.
Jika kita menggunakan operator akhiran di atasnya dan katakanlah x + +, x on line ini masih 5.
Jika kita mencetak keluar kita akan mendapatkan nilai 5.
Tapi kenyataannya akan x1 maju sama 6.
Jadi di sini pada baris x sama dengan 6, dan jika kita mencetaknya kita akan mendapatkan nilai 6.
Sekarang jika kita menggunakan operator awalan, + + x, x bertambah terlebih dahulu, dan kemudian nilai digunakan.
Jadi sama dengan 7 pada baris ini.
Incrementing tentu 6 sampai 7, dan jika kita mencetaknya kita akan mendapatkan nilai 7.
>> Nuansa terakhir di precendence bahwa kita akan melihat penawaran dengan notasi pointer.
Dereference operator, bintang, memiliki prioritas terhadap operator matematika dasar,
tapi tidak di incement akhiran dan operator penurunan.
Hal ini membawa kita ke contoh terakhir kami.
Mari kita mengambil integer x dan mengaturnya sama dengan 7.
Kami juga akan membuat y pointer dan set sama dengan alamat dari x.
Sehingga ketika kita y dereference kita harus mendapatkan nilai 7.
Sekarang di baris kode ini, kita memiliki situasi yang agak ambigu.
Apakah kita dereferencing y pertama, dan kemudian incrementing nilai 7?
Atau kita incrementing pointer dan kemudian dereferencing itu?
Bahkan, karena operator increment akhiran memiliki hak atas
operator dereference, kami mencoba untuk kenaikan y pointer,
yang akan memindahkan pointer dengan ukuran byte int.
Pada dasarnya memberikan kita alamat di beberapa titik yang sama sekali berbeda di memori,
dan kemudian kita dereferencing itu.
Jadi ini adalah garis yang sangat berarti.
Jika kita benar-benar ingin meningkatkan nilai 7,
kita harus menempatkan operator dereference dengan y dalam tanda kurung.
Lalu kita bisa kenaikan itu.
Jadi sementara kita tidak akan incrementing x nilai dengan kedua baris terakhir dari kode,
di baris terakhir dari kode kita akan Infact y dereference
untuk mendapatkan nilai x dan kenaikan itu.
Kami akan meninggalkan dengan nilai x sama dengan 8.
>> Berikut adalah rekap cepat dari aturan precendence yang telah kita bicarakan.
Kami akan mulai dengan kurung terdalam dan bekerja ke luar.
Kemudian kita beralih ke operator akhiran seperti i + + atau i -.
Kemudian dereference dan alamat operator seperti bintang x atau ampersand x,
dan operator awalan seperti + + i atau - i.
Akhirnya kami melakukan operasi matematika sederhana seperti perkalian, pembagian, modulo.
Kemudian penambahan, pengurangan.
Itu precendence. Saya Jordan Jozwiak, dan ini adalah CS50.
Kami akan dereference dan menggunakan alamat dan - bagaimana Anda frase itu?
Aku sudah selesai. Oke.