[Powered by Google Translate] Precendence adalah bagaimana kita menjawab soalan, apa operasi yang kita harus lakukan dahulu?
Sama ada menyelesaikan persamaan matematik atau garis parsing kod komputer,
terdapat peraturan yang ketat keutamaan yang kita mematuhi
supaya semua komputer dan orang ramai boleh mendapatkan keputusan yang sama.
>> Mula-mula, peraturan yang paling penting untuk diingati, terutama dalam ujian pepijat,
adalah bahawa kita sentiasa bekerja dari kurungan terdalam keluar.
Menggunakan kurungan tambahan boleh menjadi taktik debugging berguna,
tetapi ia bukan amalan yang baik untuk sampah kod anda dengan kurungan tidak diperlukan.
Ambil masa untuk mempelajari asas pengendali keutamaan peraturan.
>> Peraturan umum kedua ialah bahawa apabila pengendali mempunyai priorty sama,
anda hanya menyelesaikan dari kiri ke kanan.
Apabila berurusan dengan matematik mudah kita bermula dengan kurungan,
kemudian melakukan pendaraban dan pembahagian, dan akhir sekali melakukan penambahan dan penolakan.
Pendaraban dan pembahagian mempunyai keutamaan yang sama,
kerana mereka pada dasarnya melaksanakan operasi yang sama.
Selepas semua bahagian hanya mendarabkan oleh songsang nilai.
Begitu juga, penolakan hanya menambah nilai negatif.
>> Mari kita buat contoh.
Berikutan perintah itu keutamaan, kita akan bermula dengan kurungan. Sembilan tolak 1.
Yang akan memberi kita 8. Kemudian kita boleh bergerak untuk pembahagian dan pendaraban.
Kami akan menyelesaikan dari kiri ke kanan. Jadi 10 dibahagikan dengan 2 ialah 5.
Kami mempunyai 5 kali 8 di sini, dan yang akan memberikan kita 40.
Kemudian kita bergerak kepada perintah seterusnya keutamaan.
Jadi kita ditinggalkan dengan 3 ditambah 40 tolak 1.
Sekali lagi hanya menyelesaikan kiri ke kanan,
kerana ada keutamaan yang sama antara penambahan dan penolakan.
Kita boleh katakan 3 ditambah 40 adalah 43, tolak 1 ialah 42. Itulah jawapan kita.
>> Terdapat 2 jenis operator susutan dan kenaikan;
Bentuk awalan, dan bentuk akhiran.
Bentuk akhiran, i + +, biasanya digunakan untuk gelung,
yang bermaksud bahawa nilai semasa digunakan dalam ungkapan, dan kemudian ia incremented.
Jadi nilai hanya akan berbeza masa depan pembolehubah digunakan.
Sebaliknya, kenaikan awalan atau susutan bermakna bahawa nilai semasa
incremented atau decremented pertama, dan kemudian ia digunakan dalam ungkapan.
>> Mari kita mengambil contoh dengan x integer.
Kami akan menetapkan sama hingga 5.
Jika kita menggunakan pengendali akhiran di atasnya dan mengatakan x + +, x on-line ini masih 5.
Jika kita adalah untuk mencetak ia keluar, kita akan mendapat nilai 5.
Tetapi akan hakikat x1 hadapan bersamaan 6.
Jadi di sini pada x baris ini adalah sama dengan 6, dan jika kita dicetak keluar kita akan mendapat nilai 6.
Sekarang jika kita menggunakan pengendali awalan, + + x, x incremented pertama, dan kemudian nilai digunakan.
Jadi ia adalah sama hingga 7 on-line ini.
Incrementing 6 hingga 7 kursus, dan jika kita adalah untuk mencetak keluar kita akan mendapat nilai 7.
>> Nuansa terakhir dalam precendence bahawa kita akan melihat tawaran dengan notasi penunjuk.
Pengendali dereference, bintang, mempunyai keutamaan ke atas pengendali matematik asas,
tetapi tidak lebih incement akhiran dan pengendali susutan.
Ini membawa kita kepada contoh terakhir kami.
Mari kita x integer dan menetapkan ia sama hingga 7.
Kami juga akan membuat y penunjuk dan menetapkan ia sama dengan alamat x.
Supaya apabila kita dereference y kita perlu mendapatkan nilai 7.
Sekarang dalam baris ini kod, kita mempunyai situasi yang agak samar-samar.
Adakah kita dereferencing y 1, dan kemudian incrementing nilai 7?
Atau adakah kita incrementing penunjuk dan kemudian dereferencing ia?
Malah, kerana pengendali akhiran kenaikan mempunyai keutamaan berbanding
pengendali dereference, kita sedang cuba untuk menokokkan y penunjuk,
yang akan bergerak penunjuk oleh saiz bait int.
Asasnya memberi kami alamat di titik beberapa yang berbeza sepenuhnya dalam ingatan,
dan kemudian kita dereferencing.
Jadi ini adalah baris yang sangat bermakna.
Jika kita benar-benar mahu kenaikan nilai 7,
kita perlu meletakkan pengendali dereference dengan y dalam kurungan.
Kemudian kita boleh kenaikan.
Jadi sementara kita tidak akan incrementing x nilai dengan kedua kepada barisan terakhir kod,
dalam baris terakhir kod kita akan Malah dereference y
untuk mendapatkan nilai x dan kenaikan yang.
Kami akan dibiarkan dengan nilai x sama dengan 8.
>> Berikut adalah recap cepat peraturan precendence yang kita telah bercakap tentang.
Kami akan bermula dengan kurungan terdalam dan bekerja keluar.
Kemudian kita beralih kepada pengendali akhiran seperti i + + atau i -.
Kemudian dereference dan alamat pengendali seperti bintang x atau #: glib x,
dan operator seperti awalan + + i atau - i.
Akhirnya kita melakukan operasi matematik yang mudah seperti pendaraban, pembahagian, modulo.
Kemudian penambahan, penolakan.
Itulah precendence. Saya Jordan Jozwiak, dan ini adalah CS50.
Kami akan dereference dan menggunakan alamat dan bagaimana anda frasa yang?
Saya selesai. Okay.