Konversi Tipe Data dalam C: Konversi Implisit & Eksplisit
⚡ Ringkasan Cerdas
Konversi tipe data dalam C mengubah satu tipe data menjadi tipe data lain, baik secara implisit ketika kompiler secara otomatis mempromosikan tipe yang lebih kecil dan kompatibel, atau secara eksplisit ketika seorang programmer memaksa konversi dengan operator cast untuk mengontrol presisi dan mencegah hasil yang tidak terduga.

Apa itu Typecasting di C?
Typecasting adalah mengubah satu tipe data menjadi tipe data lainnya. Ini juga disebut sebagai konversi data atau konversi tipe dalam bahasa C. Ini adalah salah satu konsep penting yang diperkenalkan dalam pemrograman 'C'.
Pemrograman 'C' menyediakan dua jenis operasi pengecoran tipe:
- Pengecoran tipe implisit
- Pengecoran tipe eksplisit
Pengecoran tipe implisit
Konversi tipe implisit berarti konversi tipe data tanpa kehilangan makna aslinya. Jenis konversi tipe ini sangat penting ketika Anda ingin mengubah tipe data tanpa mengubah arti dari nilai yang tersimpan di dalamnya. variabel.
Konversi tipe implisit dalam C terjadi secara otomatis saat suatu nilai disalin ke tipe data yang kompatibel. Selama konversi, aturan ketat untuk konversi tipe diterapkan. Jika operan memiliki dua tipe data yang berbeda, maka operan yang memiliki tipe data lebih rendah secara otomatis dikonversi ke tipe data yang lebih tinggi. Jenis konversi tipe ini dapat dilihat pada contoh berikut.
#include<stdio.h> int main(){ short a=10; //initializing variable of short data type int b; //declaring int variable b=a; //implicit type casting printf("%d\n",a); printf("%d\n",b); }
Keluaran:
10 10
- Dalam contoh yang diberikan, kami telah mendeklarasikan variabel bertipe data pendek dengan nilai yang diinisialisasi 10.
- Pada baris kedua, kita telah mendeklarasikan variabel bertipe data int.
- Pada baris ketiga, kita telah menetapkan nilai variabel s ke variabel a. Pada baris ketiga, konversi tipe implisit dilakukan saat nilai dari variabel s yang bertipe data pendek disalin ke variabel a yang bertipe data int.
Mengubah Karakter menjadi Int
Perhatikan contoh menambahkan karakter yang didekodekan dalam ASCII dengan bilangan bulat:
#include <stdio.h> main() { int number = 1; char character = 'k'; /*ASCII value is 107 */ int sum; sum = number + character; printf("Value of sum : %d\n", sum ); }
Keluaran:
Value of sum : 108
Di sini, kompiler telah melakukan promosi integer dengan mengonversi nilai 'k' ke ASCII sebelum melakukan operasi penjumlahan sebenarnya.
Hirarki Konversi Aritmatika
Kompiler terlebih dahulu melanjutkan dengan mengubah karakter menjadi integer. Jika operan masih memiliki tipe data yang berbeda, maka operan tersebut diubah ke tipe data tertinggi yang muncul dalam bagan hierarki berikut:
Perhatikan contoh berikut untuk memahami konsepnya:
#include <stdio.h> main() { int num = 13; char c = 'k'; /* ASCII value is 107 */ float sum; sum = num + c; printf("sum = %f\n", sum );}
Keluaran:
sum = 120.000000
Pertama-tama, variabel c dikonversi menjadi bilangan bulat, tetapi kompiler mengkonversi num dan c menjadi "float" dan menjumlahkannya untuk menghasilkan hasil 'float'.
Poin Penting tentang Konversi Implisit
- Konversi tipe tipe implisit juga disebut sebagai konversi tipe standar. Kami tidak memerlukan kata kunci atau pernyataan khusus apa pun dalam casting tipe implisit.
- Konversi dari tipe data yang lebih kecil ke tipe data yang lebih besar juga disebut sebagai promosi tipe. Dalam contoh di atas, kita juga dapat mengatakan bahwa nilai s dipromosikan ke tipe integer.
- Konversi tipe implisit selalu terjadi dengan tipe data yang kompatibel.
Kami tidak dapat melakukan casting tipe implisit pada tipe data yang tidak kompatibel satu sama lain seperti:
- Mengubah float menjadi int akan memotong bagian pecahan sehingga kehilangan arti nilainya.
- Mengubah double menjadi float akan membulatkan angka-angkanya.
- Mengonversi bilangan bulat panjang ke bilangan bulat akan menyebabkan penurunan nilai.ping dari kelebihan bit orde tinggi.
Dalam semua kasus di atas, saat kita mengonversi tipe data, nilainya akan kehilangan maknanya. Umumnya, hilangnya makna nilai diperingatkan oleh kompiler.
Pemrograman 'C' menyediakan cara lain untuk melakukan typecasting yaitu casting tipe eksplisit.
Pengecoran tipe eksplisit
Dalam konversi tipe implisit, tipe data dikonversi secara otomatis. Ada beberapa skenario di mana kita mungkin harus memaksakan konversi tipe. Misalkan kita mempunyai variabel div yang menyimpan pembagian dua operan yang dideklarasikan sebagai tipe data int.
int result, var1=10, var2=3;
result=var1/var2;
Dalam hal ini, setelah dilakukan pembagian pada variabel var1 dan var2 maka hasil yang disimpan pada variabel “hasil” akan berformat integer. Bila hal ini terjadi, nilai yang disimpan dalam variabel “hasil” kehilangan maknanya karena tidak memperhitungkan bagian pecahan yang biasanya diperoleh dari pembagian dua bilangan.
Untuk memaksa konversi tipe dalam situasi seperti itu, kami menggunakan casting tipe eksplisit.
Ini membutuhkan operator pengecoran tipe. Sintaks umum untuk operasi pengecoran tipe adalah sebagai berikut:
(type-name) expression
Di sini,
- Nama tipenya adalah tipe data bahasa 'C' standar.
- Ekspresi dapat berupa konstanta, variabel, atau ekspresi aktual.
Mari kita menulis sebuah program untuk mendemonstrasikan cara mengetik di C dengan pengecoran tipe eksplisit.
#include<stdio.h> int main() { float a = 1.2; //int b = a; //Compiler will throw an error for this int b = (int)a + 1; printf("Value of a is %f\n", a); printf("Value of b is %d\n",b); return 0; }
Keluaran:
Value of a is 1.200000 Value of b is 2
- Kami telah menginisialisasi variabel 'a' bertipe float.
- Selanjutnya, kita memiliki variabel lain 'b' dengan tipe data integer. Karena variabel 'a' dan 'b' memiliki tipe data yang berbeda, 'C' tidak akan mengizinkan penggunaan ekspresi tersebut dan akan menimbulkan kesalahan. Dalam beberapa versi 'C', ekspresi tersebut akan dievaluasi tetapi hasilnya tidak sesuai harapan.
- Untuk menghindari situasi seperti itu, kita telah mengetikkan variabel 'a' dengan tipe float. Dengan menggunakan metode casting tipe eksplisit, kami telah berhasil mengubah float menjadi tipe data integer.
- Kami telah mencetak nilai 'a' yang masih mengambang
- Setelah mengetik, hasilnya akan selalu berupa bilangan bulat 'b'.
Dengan cara ini, kita dapat mengimplementasikan casting tipe eksplisit dalam pemrograman C.



