[Powered by Google Translate] JORDAN JOZWIAK: Ketik pengecoran, dalam arti yang paling sederhana, adalah cara untuk mengubah interpretasi komputer dari beberapa data dengan implisit maupun eksplisit mengubah tipe datanya. Seperti mengubah int ke float, atau sebaliknya. Untuk memahami tipe casting, kita perlu mulai dengan dasar-dasar - tipe data sendiri. Dalam bahasa komputer seperti C, semua variabel memiliki beberapa macam dari tipe data yang menentukan bagaimana komputer, dan juga pengguna, menafsirkan variabel itu. Numerik tipe data seperti float, int lama, dan ganda, semua memiliki karakteristik unik mereka sendiri dan digunakan untuk menentukan nilai dari berbagai rentang dan presisi. Tipe casting memungkinkan kita untuk mengambil nomor floating point seperti 3,14 dan mendapatkan bagian sebelum desimal, 3 dalam kasus ini, dengan casting ke int. Mari kita mengambil contoh dari bahasa Inggris untuk singkat meninjau jenis, dan untuk melihat bagaimana tipe casting dapat mengubah cara kita menafsirkan sepotong data. Untuk data, mari kita mengambil simbol sini. Saya hanya mengacu pada garis-garis hati-hati dikonfigurasi sebagai simbol, tetapi sebagai seseorang yang tahu bahasa Inggris, Anda segera menyadari bahwa mereka, pada kenyataannya, surat. Anda implisit memahami tipe data. Melihat ini string huruf kita bisa melihat dua kata yang berbeda, masing-masing dengan makna tersendiri. Ada kata benda, angin, seperti angin bertiup luar. Dan ada kata kerja, angin, seperti dalam saya perlu memutar jam analog saya. Ini adalah contoh yang menarik, karena kita bisa melihat bagaimana jenis yang kita tetapkan untuk data kami, baik kata benda atau kata kerja, perubahan bagaimana kita menggunakan data - sebagai angin kata atau angin. Meskipun komputer tidak peduli dengan tata bahasa dan bagian pidato bahasa Inggris, prinsip dasar yang sama berlaku. Artinya, kita dapat mengubah penafsiran yang tepat data yang sama disimpan dalam memori hanya dengan casting ke yang berbeda jenis. Berikut adalah ukuran dari jenis yang paling umum pada 32-bit sistem operasi. Kami memiliki char pada 1, int byte dan mengapung di 4 byte, panjang panjang dan ganda pada 8 byte. Karena int membutuhkan 4 byte, itu akan mengambil 32 bit bila disimpan dalam memori sebagai rangkaian biner dari nol dan satu. Selama variabel kita tetap sebagai int jenis, komputer selalu akan mengkonversi satu dan nol dari biner ke nomor asli. Namun, kami secara teoritis bisa melemparkan mereka 32 bit menjadi serangkaian jenis Boolean. Dan kemudian komputer akan tidak lagi melihat nomor, tapi bukan koleksi angka satu dan nol. Kita juga bisa mencoba untuk membaca data sebagai numerik yang berbeda ketik, atau bahkan sebagai string dari empat karakter. Ketika berhadapan dengan angka-angka dalam casting, Anda harus mempertimbangkan bagaimana ketepatan nilai Anda akan terpengaruh. Perlu diingat bahwa presisi dapat tetap sama, atau Anda dapat kehilangan presisi, tapi Anda tidak pernah bisa mendapatkan presisi. Mari kita pergi melalui untuk tiga cara yang paling umum yang Anda dapat kehilangan presisi. Casting pelampung ke int akan menyebabkan pemotongan dari segala sesuatu setelah titik desimal, sehingga kau pergi dengan seluruh nomor. Jika kita mengambil x mengambang yang akan sama 3.7, kita dapat melemparkan ini variabel x ke int hanya dengan menulis int di kurung. Setiap kali kita menggunakan istilah ini di sini, kami akan secara efektif akan menggunakan nilai tiga karena kami telah terpotong semuanya setelah titik desimal. Kita juga bisa mengkonversi lama ke int, yang akan sama menyebabkan hilangnya high-order bit. Sebuah lama membutuhkan 8 byte, atau 64 bit dalam memori. Jadi ketika kita melemparkannya ke int yang hanya memiliki 4 byte, atau 32 bit, kita pada dasarnya memenggal semua bit yang mewakili nilai biner yang lebih tinggi. Anda juga bisa melemparkan ganda untuk float, yang akan memberikan Anda float terdekat mungkin untuk ganda tanpa tentu pembulatan. Serupa dengan lama kami untuk konversi int, kerugian di presisi karena ganda mengandung lebih banyak data. Sebuah ganda akan memungkinkan Anda untuk menyimpan 53 bit signifikan, sekitar 16 digit signifikan. Sedangkan pelampung hanya akan memungkinkan Anda untuk menyimpan 24 signifikan bit, sekitar tujuh digit signifikan. Dalam dua kasus terakhir ini, mungkin akan membantu untuk berpikir ketik pengecoran sebagai mengubah ukuran foto. Ketika Anda pergi dari ukuran besar ke ukuran kecil, Anda tidak dapat melihat hal yang jelas karena Anda kehilangan data dalam bentuk piksel. Tipe casting juga dapat menyebabkan masalah ketika kita dilemparkan ints untuk mengapung. Karena mengapung pada mesin 32-bit hanya memiliki 24 bit signifikan, mereka tidak dapat secara akurat mewakili nilai-nilai lebih dari 2 dengan kekuatan 24, atau 16.777.217. Sekarang mari kita bicara tentang pengecoran eksplisit dan implisit. Pengecoran eksplisit adalah ketika kita menulis jenis dalam tanda kurung sebelum nama variabel. Sebagai contoh, sebelum kita menulis int dalam tanda kurung sebelum kami mengapung variabel x. Dengan cara ini, kita mendapatkan nilai int, yang terpotong nilai 3,7 - 3. Casting implisit adalah ketika compiler secara otomatis berubah jenis mirip dengan jenis super, atau melakukan semacam lain pengecoran tanpa mengharuskan pengguna untuk menulis kode tambahan. Sebagai contoh, ketika kita menambahkan 5 dan 1,1, nilai-nilai kita sudah memiliki tipe yang terkait dengan mereka. The 5 adalah int, sedangkan 1,1 adalah pelampung. Untuk menambahkannya, komputer gips 5 ke pelampung, yang akan menjadi hal yang sama seperti menulis 5.0 dalam tempat pertama. Tapi ini cara kita katakan mengambang 5, atau 5.0, ditambah apa yang sudah float, 1.1, dan dari sana kita benar-benar dapat menambahkan nilai-nilai dan mendapatkan nilai 6,1. Casting implisit juga memungkinkan kita untuk menetapkan variabel yang berbeda jenis satu sama lain. Kami selalu dapat menetapkan jenis kurang tepat menjadi lebih tepat satu. Sebagai contoh, jika kita memiliki x ganda, dan y int - dan ini bisa memiliki nilai-nilai yang kita atur ke - kita dapat mengatakan x sama dengan y. Karena ganda memiliki presisi lebih dari int, jadi kami tidak akan kehilangan informasi apapun. Di sisi lain, hal itu belum tentu benar untuk mengatakan y sama dengan x, karena dua kali lipat mungkin memiliki nilai lebih besar dari integer. Dan sehingga integer mungkin tidak mampu menahan semua informasi yang tersimpan di ganda. Casting implisit juga digunakan dalam operator perbandingan seperti lebih besar dari, kurang dari, atau operator kesetaraan. Dengan cara ini kita dapat mengatakan jika 5,1 lebih besar dari 5, dan kami mendapatkan hasil yang benar. Karena 5 adalah int, tapi itu akan dilemparkan ke pelampung untuk dibandingkan dengan float 5.1, kita akan mengatakan 5.1 adalah lebih besar dari 5,0. Hal yang sama berlaku dengan mengatakan jika 2,0 sama sama 2. Kita juga akan mendapatkan yang benar, karena komputer akan melemparkan integer 2 mengapung dan kemudian mengatakan 2,0 sama sama 2.0, ini benar. Jangan lupa bahwa kita juga bisa melemparkan antara ints dan karakter, atau nilai-nilai ASCII. Karakter juga perlu dikurangi menjadi biner, yang mengapa Anda dapat dengan mudah mengkonversi antara karakter dan masing-masing ASCII nilai. Untuk mempelajari lebih lanjut tentang hal ini, check out video kami pada ASCII. Bila Anda luangkan waktu untuk berpikir tentang bagaimana data yang disimpan, ia mulai membuat banyak akal. Ini seperti perbedaan antara angin dan angin. Data adalah sama, namun jenisnya dapat mengubah bagaimana kita menafsirkannya. Nama saya Jordan Jozwiak, cs50 ini.