Apa itu Penaip Jenis dalam C?
Pencetakan Jenis adalah menukar satu jenis data menjadi yang lain. Ia juga disebut sebagai penukaran data atau penukaran jenis. Ini adalah salah satu konsep penting yang diperkenalkan dalam pengaturcaraan 'C'.
Pengaturcaraan 'C' menyediakan dua jenis operasi pemutus jenis:
- Pemutus jenis tersirat
- Pemutus jenis eksplisit
Pemutus jenis tersirat
Casting jenis tersirat bermaksud penukaran jenis data tanpa kehilangan makna asalnya. Jenis taip jenis ini sangat mustahak apabila anda ingin menukar jenis data tanpa mengubah kepentingan nilai yang disimpan di dalam pemboleh ubah.
Penukaran jenis tersirat berlaku secara automatik apabila nilai disalin ke jenis datanya yang serasi. Semasa penukaran, peraturan ketat untuk penukaran jenis digunakan. Sekiranya operan terdiri daripada dua jenis data yang berbeza, maka operan yang mempunyai jenis data yang lebih rendah secara automatik akan ditukar menjadi jenis data yang lebih tinggi. Jenis penukaran jenis ini dapat dilihat dalam contoh berikut.
#includeint main(){short a=10; //initializing variable of short data typeint b; //declaring int variableb=a; //implicit type castingprintf("%d\n",a);printf("%d\n",b);}
Pengeluaran
1010
- Dalam contoh yang diberikan, kami telah menyatakan pemboleh ubah jenis data pendek dengan nilai yang diinisialisasi sebagai 10.
- Pada baris kedua, kami telah menyatakan pemboleh ubah dari jenis data int.
- Pada baris ketiga, kami telah menetapkan nilai pemboleh ubah s kepada pemboleh ubah a. Pada baris ketiga penukaran jenis tersirat dilakukan sebagai nilai dari pemboleh ubah s yang jenis data pendek disalin ke dalam pemboleh ubah yang merupakan jenis data int.
Menukar Watak ke Int
Pertimbangkan contoh penambahan watak yang dikodkan dalam ASCII dengan bilangan bulat:
#includemain() {int number = 1;char character = 'k'; /*ASCII value is 107 */int sum;sum = number + character;printf("Value of sum : %d\n", sum );}
Pengeluaran:
Value of sum : 108
Di sini, penyusun telah melakukan promosi integer dengan menukar nilai 'k' ke ASCII sebelum melakukan operasi penambahan sebenar.
Hierarki Penukaran Aritmetik
Penyusun mula-mula meneruskan mempromosikan watak menjadi bilangan bulat. Sekiranya operan masih mempunyai jenis data yang berbeza, maka operan tersebut ditukarkan ke jenis data tertinggi yang muncul dalam carta hierarki berikut:
Pertimbangkan contoh berikut untuk memahami konsep:
#includemain() {int num = 13;char c = 'k'; /* ASCII value is 107 */float sum;sum = num + c;printf("sum = %f\n", sum );}
Pengeluaran:
sum = 120.000000
Pertama sekali, pemboleh ubah c ditukar menjadi bilangan bulat, tetapi penyusun menukar angka dan c menjadi "apungan" dan menambahkannya untuk menghasilkan hasil 'apungan'.
Perkara Penting mengenai Penukaran Tersirat
- Jenis penukaran jenis tersirat juga disebut sebagai penukaran jenis standard. Kami tidak memerlukan kata kunci atau pernyataan khas dalam pemilihan jenis tersirat.
- Menukar dari jenis data yang lebih kecil menjadi jenis data yang lebih besar juga disebut sebagai promosi jenis . Dalam contoh di atas, kita juga dapat mengatakan bahawa nilai s dipromosikan menjadi jenis bulat.
- Penukaran jenis tersirat selalu berlaku dengan jenis data yang serasi.
Kami tidak dapat melakukan pemutus jenis tersirat pada jenis data yang tidak sesuai antara satu sama lain seperti:
- Menukar apungan ke int akan memangkas bahagian pecahan sehingga kehilangan makna nilai.
- Menukar dua kali ganda ke apungan akan membundarkan digit.
- Menukar int panjang ke int akan menyebabkan penurunan bit pesanan tinggi yang berlebihan.
Dalam semua kes di atas, apabila kita menukar jenis data, nilainya akan kehilangan maknanya. Secara amnya, kehilangan makna nilai diperingatkan oleh penyusun.
Pengaturcaraan 'C' menyediakan cara penaipan taip lain iaitu pemutus jenis eksplisit.
Pemutus jenis eksplisit
Dalam penukaran jenis tersirat, jenis data ditukar secara automatik. Terdapat beberapa senario di mana kita mungkin terpaksa memaksa penukaran jenis. Anggaplah kita mempunyai pemboleh ubah div yang menyimpan pembahagian dua operasi yang dinyatakan sebagai jenis data int.
int result, var1=10, var2=3;result=var1/var2;
Dalam kes ini, setelah pembahagian dilakukan pada pemboleh ubah var1 dan var2 hasil yang tersimpan dalam pemboleh ubah "hasil" akan dalam format integer. Setiap kali ini berlaku, nilai yang tersimpan dalam pemboleh ubah "hasil" kehilangan maknanya kerana tidak menganggap bahagian pecahan yang biasanya diperoleh dalam pembahagian dua nombor.
Untuk memaksa penukaran jenis dalam situasi seperti itu, kami menggunakan pemutus jenis eksplisit.
Ia memerlukan pengendali pemutus jenis. Sintaks umum untuk operasi pemutus jenis adalah seperti berikut:
(type-name) expression
Di sini,
- Nama jenis adalah jenis data bahasa 'C' standard.
- Ungkapan boleh berupa pemalar, pemboleh ubah atau ungkapan sebenarnya.
Marilah kita menulis program untuk menunjukkan pelaksanaan pengecoran jenis eksplisit dalam 'C'.
#includeint main(){float a = 1.2;//int b = a; //Compiler will throw an error for thisint b = (int)a + 1;printf("Value of a is %f\n", a);printf("Value of b is %d\n",b);return 0;}
Pengeluaran:
Value of a is 1.200000Value of b is 2
- Kami telah memulakan pemboleh ubah 'a' jenis apungan.
- Seterusnya, kita mempunyai satu lagi pemboleh ubah 'b' dari jenis data integer. Oleh kerana pemboleh ubah 'a' dan 'b' adalah jenis data yang berbeza, 'C' tidak akan membenarkan penggunaan ungkapan tersebut dan itu akan menimbulkan kesalahan. Dalam beberapa versi 'C', ungkapan akan dinilai tetapi hasilnya tidak akan diinginkan.
- Untuk mengelakkan situasi seperti itu, kami telah menaip pemboleh ubah jenis 'a' float jenis. Dengan menggunakan kaedah casting jenis eksplisit, kami berjaya menukar float menjadi bilangan bulat jenis data.
- Kami telah mencetak nilai 'a' yang masih terapung
- Selepas penaipan taip, hasilnya akan selalu menjadi bilangan bulat 'b.'
Dengan cara ini, kita dapat melaksanakan casting jenis eksplisit dalam pengaturcaraan 'C'.
Ringkasan
- Pencetakan Jenis juga dipanggil sebagai penukaran jenis
- Ini bermaksud menukar satu jenis data menjadi yang lain.
- Menukar jenis data yang lebih kecil menjadi yang lebih besar juga disebut sebagai promosi jenis.
- 'C' menyediakan cara penukaran jenis yang tersirat dan eksplisit.
- Penukaran jenis tersirat beroperasi secara automatik apabila jenis data yang serasi dijumpai.
- Penukaran jenis eksplisit memerlukan pengendali pemutus jenis.
Perlu diingat peraturan berikut untuk latihan pengaturcaraan ketika berhadapan dengan jenis data yang berbeza untuk mencegah kehilangan data:
- Jenis bilangan bulat mesti ditukar menjadi apungan.
- Jenis apungan harus ditukar menjadi dua kali ganda.
- Jenis watak harus ditukar menjadi integer.