Selasa, 25 Maret 2014

Konversi Eksplisit dan Implisit

Kuiz Besar no.4
Mengkombinasikan variabel dan konstanta dari tipe yang berbeda dalam suatu ekspresi akan secara otomatis dikonversi ke tipe data yang sama oleh kompiler. Konversi tipe yang terdefinisi sebelumnya disebut proses type conversion atau konversi jenis. Konversi jenis dalam C diklasifikasi dalam dua jenis; yaitu implicit conversion atau type promotion, dan explicit conversion.

Konversi Implist / Type Promotion

Type conversion yang terjadi secara otomatis tanpa sentuhan programmer dikenal sebagai implicit type conversion atau type promotion. Operand-operand (nilai diantara operator) akan dikonversi menjadi tipe data operand yang terbesar.

Beberapa aturan-aturan yang terjadi saat mengevaluasi ekspresi adalah sebagai berikut:
Semua short dan char secara otomatis akan dikonversi menjadi int.
Jika salah satu operand bertipe long double, maka operand lain akan dikonversi menjadi long double dan hasilnya pun juga long double.
Jika salah satu operand bertipe double, maka lainnya akan jadi double.
Begitu juga dengan tipe float dan unsigned long int.
Jika salah satu operand adalah long int dan lainnya unsigned int, maka saat long int dapat merepresentasikan semua nilai atau value dari satu unsigned int, unsigned int dikonversi jadi long int. Atau, kedua operand terkonversi jadi unsigned long int.
Jika salah satu operand adalah long int maka lainnya akan menjadi long int
Jika salah satu operand adalah unsigned int maka lainnya akan menjadi unsigned int
Untuk diingat, hasil akhir ekspresi dikonversi ke tipe variabel di sisi kiri operator perintah sebelum memasukkan nilai ke dalamnya.
Konversi float ke int menyebabkan truncation atau hilangnya bagian fraksional.
Konversi double ke float menyebabkan pembulatan angka.
Konversi long int ke int menyebabkan menurunnya tatanan bit yang lebih tinggi

Konversi Eksplisit / Type Casting

Konversi tipe ini dilakukan secara manual oleh sang programmer, beda dengan implisit yang secara otomatis terkonversi oleh compiler.
Metode ini boleh atau biasa disebut type casting
Bentuk type casting itu seperti ini umumnya:

(tipe_data) ekspresi

Dimana tipe_data merupakan tipe data C yang valid, sementara ekspresi bisa diisi variabel, konstanta atau suatu ekspresi.
Ada aturan-aturan yang wajib diikuti pada saat mengkonversi ekspresi dari tipe A ke tipe B untuk menghindari hilangnya bagian :

Semua tipe integer yang bakal dikonversi ke float
Semua tipe float yang bakal dikonversi jadi double
Semua tipe char yang bakal dikonversi ke int

Contoh :

X = ( int ) a + b * c;

Tidak ada komentar:

Posting Komentar