C pelakon
Paksaan ialah menukar pembolehubah daripada satu jenis kepada jenis data yang lain. Sebagai contoh, jika anda ingin menyimpan nilai panjang dalam integer mudah, anda perlu menghantar panjang kepada int. Anda boleh menggunakan operator cast untuk menukar nilai secara eksplisit daripada satu jenis kepada jenis lain, seperti yang ditunjukkan di bawah:
(type_name) expression
Lihat contoh berikut, menggunakan cast Operator penukaran jenis membahagikan pembolehubah integer dengan satu lagi pembolehubah integer, menghasilkan nombor titik terapung:
#include <stdio.h>main(){ int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean );}
Apabila kod di atas disusun dan dilaksanakan, ia menghasilkan keputusan berikut:
Value of mean : 3.400000
Apa yang perlu diperhatikan di sini ialah keutamaan pengendali tuang adalah lebih besar daripada pembahagian, jadi nilai jumlah mula-mula ditukar kepada menaip berganda, dan kemudian dibahagikan dengan kiraan untuk mendapatkan jenis nilai berganda.
Penukaran jenis boleh secara tersirat, dilakukan secara automatik oleh pengkompil, atau eksplisit, ditentukan menggunakan operator cast . Apabila pengaturcaraan, adalah kebiasaan pengaturcaraan yang baik untuk menggunakan operator cast apabila penukaran jenis diperlukan.
Promosi integer
Promosi integer merujuk kepada menukar jenis integer yang lebih kecil daripada int atau unsigned int kepada int atau proses unsigned int. Lihat contoh berikut, menambah aksara pada int:
#include <stdio.h>main(){ int i = 17; char c = 'c'; /* ascii 值是 99 */ int sum; sum = i + c; printf("Value of sum : %d\n", sum );}
Apabila kod di atas disusun dan dilaksanakan, ia akan menghasilkan keputusan berikut:
Value of sum : 116
Di sini, nilai jumlah ialah 116 , kerana pengkompil melakukan promosi integer dan menukar nilai 'c' kepada nilai ascii yang sepadan apabila melakukan operasi penambahan sebenar.
Penukaran aritmetik yang biasa digunakan
Penukaran aritmetik yang biasa digunakan secara tersirat memaksa nilai kepada jenis yang sama. Pengkompil pertama kali melakukan promosi integer, dan jika jenis operan berbeza, ia ditukar kepada jenis tahap tertinggi yang berlaku dalam hierarki berikut:
Penukaran aritmetik biasa tidak digunakan Untuk pengendali tugasan, pengendali logik && dan ||. Mari kita lihat contoh berikut untuk memahami konsep ini:
#include <stdio.h>main(){ int i = 17; char c = 'c'; /* ascii 值是 99 */ float sum; sum = i + c; printf("Value of sum : %f\n", sum );}
Apabila kod di atas disusun dan dilaksanakan, ia menghasilkan keputusan berikut:
Value of sum : 116.000000
Di sini, c mula-mula ditukar kepada integer, tetapi memandangkan nilai akhir adalah jenis berganda, penukaran aritmetik biasa digunakan, dan pengkompil menukar i dan c kepada jenis titik terapung dan menambahkannya untuk mendapatkan nombor titik terapung.