Halo dan selamat datang.
Dalam kuliah ini, saya ingin berbicara tentang beberapa operator yang sedikit aneh dalam arti bahwa
Anda tidak perlu berpikir bahwa mereka adalah operator.
Karena semua operator yang kami pelajari sampai saat ini benar-benar hanya menunjukkan Anda tahu
semacam menggunakan simbol untuk melakukan perhitungan pada angka.
Dan operator ini sebenarnya terlihat seperti fungsi.
Jadi mari kita bicara tentang pemeran dalam ukuran operator.
Untuk pertama-tama berbicara tentang operator pemeran, saya
harus memberi tahu Anda sedikit tentang konversi tipe, bagaimana data dikonversi.
Kami mempelajari semua tentang tipe data dan tipe data yang berbeda di luar sana.
Tetapi jika Anda benar-benar mencoba untuk menetapkan data ke tipe yang
berbeda, ada beberapa konversi implisit yang terjadi dalam bahasa pemrograman c.
Jadi konversi data antara tipe yang berbeda dapat terjadi secara otomatis
dan ini disebut sebagai konversi implisit
oleh bahasa atau secara eksplisit oleh program oleh program atau.
Pemrogram itu sendiri pengembang dapat melakukan sesuatu.
Mereka dapat menggunakan operator pemeran pada dasarnya untuk melakukan konversi.
Data yang sedang dikonversi secara implisit sangat penting
karena Anda harus memahami ini karena sebagian besar program c
yang akan Anda kembangkan untuk mengembangkannya secara efektif, Anda harus memahami
aturan ini untuk konversi ini.
Karena Anda akan sering memiliki bilangan bulat dan bilangan floating
point, bilangan desimal dan bilangan bulat.
Dan Anda akan menggunakannya untuk mencampurkannya kadang-kadang.
Dan ketika Anda melakukannya, Anda harus tahu bagaimana hal-hal diubah.
Sekarang Anda harus mencoba menghindarinya sebanyak mungkin dengan menggunakan operator pemeran.
Tetapi ketika Anda tidak menggunakan operator pemeran, pahami apa yang terjadi.
Dan apa yang terjadi di sini ketika Anda menetapkan data
ke berbagai jenis float
dan double, data akan dipotong atau akan dipromosikan.
Ini adalah dua istilah yang akan Anda dengar.
Sarana yang terpotong menjadi kurang tepat
dan sarana yang dipromosikan menjadi lebih tepat.
Jadi cobalah untuk tidak mencampur jenis ini tetapi mungkin bermanfaat.
Hal utama yang harus dipahami adalah kita tahu dari kuliah sebelumnya bahwa c sangat fleksibel.
Dan itu adalah keputusan sadar oleh para perancang bahasa.
Ketika mereka ingin membuatnya fleksibel tetapi sekali lagi sebagai trade-off, karena
kebebasan tambahan ini diberikan kepada Anda,
Anda dapat menyalahgunakannya. Jadi, jangan menyalahgunakan
gagasan tentang tipe pencampuran ini.
Cobalah untuk menggunakan tipe yang sama jika Anda bisa, bilangan bulat dengan bilangan bulat, pelampung dengan pelampung.
Tetapi ketika
Anda tidak bisa, pahami konversi implisit atau lakukan
konversi eksplisit menggunakan operator cast.
Jadi sekali lagi, masalah lain
atau konsep lain di mana c fleksibel, tetapi Anda tidak boleh menyalahgunakannya.
Jadi, setiap kali nilai floating point ditetapkan ke variabel integer di c,
jadi Anda memiliki int x, float y, x
sama dengan y.
Bagian desimal dari angka tersebut akan terpotong.
Jadi jika Anda memiliki angka int x sama dengan 0, float
f sama dengan 12. 125 dan Anda
menetapkan f ke x, nilai x akan menjadi 12.
Anda akan kehilangan presisi itu. Nilainya akan terpotong
karena Anda menetapkan float ke int. Int hanya tahu cara menyimpan bilangan bulat.
Jadi secara otomatis dikonversi oleh bahasa pemrograman, oleh kompiler ke 12.
Hanya impor yang akan disimpan.
Sekarang jika Anda menetapkan variabel integer ke variabel floating point, yang merupakan
kebalikannya, itu tidak menyebabkan perubahan nilai angka.
Nilai diubah oleh sistem dan disimpan dalam variabel mengambang.
Sehingga Anda tidak perlu khawatir, menetapkannya ke dalam aliran.
Jika Anda menetapkan 12 ke aliran, itu masih akan menjadi 12, hanya 12. 0.
Ketika Anda melakukan aritmatika pada bilangan bulat dan
jadi ini berbeda dari hanya menetapkan nilai yang menetapkannya ke float atau float ke
int, ini adalah saat Anda
memiliki ekspresi, Anda melakukan beberapa penambahan beberapa pengurangan, apa pun masalahnya.
Saat Anda melakukan pengurangan atau penambahan, Anda memiliki dua operan.
Jadi satu operator bisa menjadi int, satu operan bisa menjadi float.
Anda harus tahu bagaimana konversi itu terjadi.
Jadi, jika Anda memiliki dua operan dalam sebuah ekspresi dan keduanya
bilangan bulat, maka bagian desimal apa pun yang dihasilkan dari operasi pembagian akan dibuang.
Jadi jika Anda melakukannya jika Anda memiliki bilangan bulat x, itu adalah 20.
Anda memiliki bilangan bulat y, itu 12. Dan Anda melakukan 20 dibagi 12.
Anda tidak akan mendapatkan 1 poin sesuatu sesuatu sesuatu. Anda hanya akan mendapatkan 1.
Itu akan membuang semua hasil dan membuatnya baru karena lagi-lagi sebuah int hanya menyimpan bilangan bulat.
Jadi dua angka adalah int dan mereka melakukan pembagian.
Anda tidak akan mendapatkan nomor floating point. Anda tidak akan mendapatkan angka desimal.
Sekarang jika satu operator adalah int dan yang lainnya adalah float, maka operasi
tersebut akan dibentuk sebagai operasi floating point. Jadi jika Anda memiliki float f adalah 20. 0, float a adalah
10, an int, maka jika Anda melakukan
pembagian di sana atau 12 maaf itu akan lebih berlaku, maka
hasilnya akan melakukan angka floating point dan hasilnya
akan menjadi 1 poin 8888 atau apa pun itu 1 poin
apa pun masalahnya.
Anda tidak menetapkan data ini untuk apa pun. Ini adalah ekspresi apa yang akan dikembalikan.
Jadi dua int dalam sebuah divisi, itu akan menjadi bilangan bulat.
Sebuah int dan double atau float, itu akan selalu menjadi float, itu selalu akan menjadi
operasi desimal desimal floating point.
Dan ini adalah konversi implisit. Itulah yang Anda butuhkan untuk memahami
apa yang terjadi dan dilakukan untuk Anda oleh program jika Anda tidak melakukan apa-apa.
Namun, Anda harus mencoba melakukan beberapa
konversi eksplisit, yang dapat Anda lakukan dengan operator pemeran.
Dan ini hanya disebut sebagai casting kurang lebih.
Dan Anda melihat casting dalam banyak bahasa saat Anda ingin mengonversi.
Dan semua itu adalah Anda melakukan
konversi eksplisit, Anda mengatakan data yang Anda inginkan.
Jadi Anda ingin melakukan ini jika Anda
bisa karena jika tidak, data mungkin diturunkan, mungkin hilang.
Jika Anda melakukan dua int dan Anda melakukan pembagian
dan mereka tidak dibagi rata, Anda akan kehilangan semua data itu.
Jadi Anda dapat meminta konversi jenis yang tepat yang Anda
inginkan dengan menentukannya secara eksplisit.
Ini disebut gips dan terdiri dari mendahului kuantitas dengan
nama jenis yang diinginkan dalam tanda kurung.
Jadi tanda kurung dan
nama tipe merupakan operator
cap.
Anda melakukan kurung kiri dan kemudian Anda menentukan tipe data dan kemudian menulis kurung.
Dan itu akan mengubah apa pun yang ada di sebelah
kanannya, apa pun ekspresi yang ada di sebelah kanannya atau bahkan jika itu hanya satu variabel,
itu akan mengubahnya menjadi apa yang pernah ada di dalam tanda kurung.
Jadi tipe sebenarnya yang diinginkan seperti long, diganti dengan tipe kata tersebut.
Jadi jenis yang dilewatkan operator memiliki prioritas lebih tinggi daripada semua operator aritmatika kecuali unitary
minus dan unity plus. Kami belum belajar tentang prioritas.
Kita akan di kuliah berikutnya. Prioritas pada dasarnya adalah
apa yang terjadi, urutan operasi yang dilakukan.
Jadi kami akan memberikan beberapa contoh tentang itu. Yang harus Anda pahami pada titik ini adalah
bahwa operator typecast lebih diutamakan daripada setiap operator lain, kecuali dua unary minus dan unary plus.
Jadi di sini contoh, kami memiliki nomor 21. 51 dan kami memiliki
operator pemeran karena kami tahu itu operator pemeran karena ada
dalam tanda kurung dan memiliki tipe. Dan pada dasarnya kami katakan
adalah ambil 21. 51 mengubahnya menjadi int.
Jika Anda mengambil angka floating point yang dikonversi
menjadi itu, itu hanya menjadi int, bilangan bulat, 21.
Sama dengan yang dilakukan di sisi kanan, ini mengonversi 26. 99 ke int.
Jadi apa yang sebenarnya terjadi di sini jika Anda melakukan ekspresi ini dalam sebuah pernyataan, itu
akan dievaluasi sebagai 21 ditambah 26. Itu akan memotong data
dari 0. 51 ke bilangan bulat dan sama dengan 0. 99.
Dan itulah operator pemeran, apa pun di dalam tanda kurung yang berisi tipe data.
Anda akan sering melihat ini.
Jika Anda mengatakan 21 ditambah 26 dan Anda melemparkannya ke float, itu hanya
akan menambahkan titik 0.
Biasanya, Anda tidak menggunakan tipe yang lebih tepat karena Anda tidak akan
mendapatkan yang lebih tepat.
Anda melakukan cast dari tipe yang lebih presisi ke tipe yang kurang presisi.
Jadi lebih seperti float ke int.
Jadi Anda akan melihat ini di beberapa program sesekali saat
Anda menggunakan jenis yang berbeda. Anda harus mencoba menghindari penggunaan tipe yang
berbeda jika Anda melakukan aritmatika. Tetapi jika Anda melakukannya, Anda akan melihat ini.
Ukuran operator, operator lain yang agak aneh, tidak
mirip dengan banyak yang lain. Dan ini sebenarnya terlihat seperti sebuah fungsi.
Tapi sizeof adalah operator. Ia melakukan suatu tindakan.
Itu tidak melakukan apa pun yang berorientasi pada fungsi.
Apa yang dilakukannya adalah memberi tahu Anda berapa banyak byte yang ditempati
dalam memori oleh tipe tertentu. Jadi terlihat seperti fungsi karena membutuhkan argumen.
Dan kami akan memberikan contoh tentang itu tapi itu hanya akan mengembalikan jumlah byte dalam memori. Ingat bahwa tergantung pada
sistem yang Anda jalankan, platform yang
Anda jalankan, sistem operasi, arsitektur komputer, perangkat keras, tipe
data yang berbeda akan diwakili memori dengan ukuran yang berbeda.
Misalnya, sebuah int mungkin 4 byte pada 1 sistem 8 di sistem lain.
Jadi yang dapat Anda lakukan adalah Anda dapat menggunakan operator sizeof sebagai kata kunci khusus operator di c dan Anda
dapat memasukkan tipe data dan itu akan memberi tahu Anda berapa byte yang digunakannya di memori.
Jadi sizeof sebenarnya adalah operator, itu bukan fungsi.
Itu dievaluasi pada waktu kompilasi dan bukan pada saat runtime kecuali array panjang variabel digunakan dalam argumennya.
Jadi kami akan menyebutkan itu. Ini pada dasarnya mengatakan bahwa jika Anda
memiliki variabel yang berada di dalam
ukuran array, itu tidak akan diselesaikan pada waktu kompilasi saat runtime, jadi tidak
terlalu penting untuk diketahui.
Argumen untuk operator sizeof dapat berupa variabel, nama
array, nama tipe data dasar, seperti
int float, nama tipe data turunan apa pun atau ekspresi.
Jadi bisa dibilang sizeof x plus y.
Dan itu pada dasarnya hanya akan mengatakan ukuran x
ditambah ukuran y atau angka yang dihasilkan. Jika x adalah int, y adalah int dengan ukuran 16, itu
akan mengatakan ini adalah inci 4 byte.
Jika int one adalah float dan hasilnya adalah aritmatika floating point,
maka float adalah 8 byte atau sesuatu.
Tetapi Anda dapat menggunakannya untuk banyak hal, dan Anda harus menggunakannya untuk banyak hal. Sizeof int, misalnya, akan menghasilkan
jumlah byte yang ditempati oleh variabel bertipe int.
Jadi ini akan mengembalikan 4 atau 8 tergantung pada sistem Anda.
Anda juga dapat menerapkan operator sizeof ke ekspresi, seperti yang
saya sebutkan, hasilnya adalah ukuran nilainya.
Itu hasil dari ekspresi area. Jadi jika dua int bersama-sama, mereka akan tetap menjadi int.
Jadi itu masih akan menjadi ukuran. Tetapi Anda akan melihat operator sizeof juga digunakan ketika kita berbicara tentang pointer.
Saya ingin membicarakan ini sekarang karena ini adalah operator.
Tapi kita akan memberikan lebih banyak contoh tentang ini dan casting di seluruh kelas saat
kita berbicara tentang lebih banyak konsep.
Secara khusus, operator sizeof berperan lebih banyak ketika
kita berbicara tentang pointer karena
ketika Anda menghitung berapa banyak memori untuk dialokasikan yang merupakan pointer, Anda
menggunakan sizeof karena Anda ingin tepatnya.
Tapi kamu juga bisa menggunakannya untuk hal lain.
Jadi gunakan operator sizeof bila memungkinkan untuk menghindari penghitungan ukuran kode keras ke
dalam program Anda.
Ukuran kode keras angka ajaib bukan hal yang baik karena sekali lagi jika
Anda berada di sistem yang berbeda, jika Anda menggunakan kode keras
4 pada 1 sistem untuk int, di sistem lain mungkin 8, jadi gunakan
ukuran sebanyak Anda bisa dan kita akan melihat ini menjadi lebih relatabilitas
ketika kita berbicara tentang pointer.
Operator lain yang
sedikit aneh adalah operator asterisk.
Anda mungkin berkata pada diri sendiri asterisk, kita sudah membicarakan ini dalam perkalian.
Tapi tanda bintang itu membutuhkan dua operan, satu di kiri dan satu di kanan.
Jika Anda menerapkan operator tanda bintang ke
variabel dan Anda hanya mengatakan nama variabel bintang dengan hanya satu argumen di sebelah
kanan, itu mewakili sesuatu yang lain. Ini sebenarnya mewakili sebuah pointer.
Ini mendereferensikan sebuah pointer.
Dan sekali lagi, saya tidak akan membahas ini sekarang karena kita akan membahas
ini ketika kita berbicara tentang petunjuk.
Tetapi jika Anda melihat sesuatu seperti bintang a, jangan panik itu benar-benar valid.
Itu melakukan asterisk operator pointer.
Anda juga dapat melihat tanda tanya titik dua.
Ini adalah operator yang digunakan untuk pengambilan keputusan.
Jika kondisinya benar, jika hal di sebelah kiri benar, maka nilai
di sebelah kanan setelah titik dua dievaluasi dan seterusnya sebaliknya.
Ini adalah notasi singkat untuk pernyataan if-else.
Ini adalah operator ternary, namanya. Tetapi sekali lagi, saya tidak
ingin membahas ini secara mendetail sekarang
karena kita akan membicarakannya ketika kita membicarakan topik
khusus kita.
Kita akan berbicara tentang operator belok ketika kita berbicara tentang pernyataan keputusan. Kita akan berbicara
tentang operator asterisk unary ketika kita berbicara tentang pointer.
Tetapi jika Anda melihat ini sekarang dan saya ingin menyebutkannya sekarang karena mereka secara teknis adalah operator, tetapi
kita akan memahami kasus penggunaannya ketika kita membicarakan konsep tersebut. Terima kasih.