Rumah >pembangunan bahagian belakang >Tutorial C#.Net >Bagaimana untuk melakukan penukaran jenis paksa dalam bahasa C
Dalam bahasa C, anda boleh melakukan penukaran jenis paksa melalui pernyataan "(type_name) expression" Parameter "type_name" mewakili nama jenis baharu Sebagai contoh, "(float)100" menukar nilai 100 jenis int Ia adalah jenis apungan. Penukaran jenis paksa ialah penukaran jenis yang dicadangkan secara eksplisit oleh pengaturcara dan perlu dinyatakan melalui kod dalam format tertentu Apabila pengaturcaraan, adalah kebiasaan pengaturcaraan yang baik untuk menggunakan operator penukaran jenis paksa apabila penukaran jenis diperlukan.
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi c99, komputer Dell G3.
Penukaran jenis data adalah untuk menukar data (pembolehubah, nilai, hasil ungkapan, dsb.) daripada satu jenis kepada jenis yang lain.
Bahasa C mempunyai dua kaedah jenis data:
Penukaran jenis automatik: Ia ialah penukaran jenis data yang dilakukan secara senyap, tersirat dan rahsia oleh pengkompil tidak memerlukan campur tangan pengaturcara dan berlaku secara automatik.
Penukaran jenis paksa
Mari kita lihat dengan lebih dekat penukaran jenis paksa dalam bahasa C.
Penukaran jenis paksa
Penukaran jenis automatik ialah hasil pertimbangan pengkompil sendiri berdasarkan konteks kod, dan kadangkala ia adalah tidak begitu "cerdik" ” tidak dapat memenuhi semua keperluan. Jika perlu, pengaturcara juga boleh secara eksplisit mencadangkan penukaran jenis dalam kod itu sendiri, yang dipanggil penukaran jenis paksa.
Penukaran jenis automatik ialah penukaran jenis yang dilakukan secara senyap dan tersirat oleh pengkompil dan tidak perlu ditunjukkan dalam kod penukaran jenis paksa yang dicadangkan secara eksplisit oleh pengaturcara dan perlu dilakukan melalui kod dalam kod tertentu; format. Dengan kata lain, penukaran jenis automatik tidak memerlukan campur tangan pengaturcara, manakala penukaran jenis paksa memerlukan campur tangan pengaturcara.
Format penukaran jenis paksa ialah:
(type_name) expression
type_name
ialah nama jenis baharu
expression
Untuk ungkapan
Contohnya:
(float) a; //将变量 a 转换为 float 类型 (int)(x+y); //把表达式 x+y 的结果转换为 int 整型 (float) 100; //将数值 100(默认为int类型)转换为 float 类型
Sila lihat contoh berikut, menggunakan operator cast untuk membahagikan pembolehubah integer dengan pembolehubah integer yang lain, kita dapatkan Nombor mata terapung:
#include <stdio.h> int main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean ); }
Perlu diperhatikan di sini bahawa keutamaan pengendali tuang adalah lebih besar daripada pembahagian, jadi nilai jumlah mula-mula ditukar kepada jenis berganda, dan kemudian Bahagikan mengikut kiraan untuk mendapatkan nilai jenis 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.
Penukaran jenis hanya sementara
Sama ada penukaran jenis automatik atau penukaran jenis paksa, ia hanya sementara untuk operasi ini , hasil penukaran juga akan disimpan ke ruang memori sementara, dan jenis atau nilai asal data tidak akan diubah. Sila lihat contoh berikut:
#include <stdio.h> int main(){ double total = 400.8; //总价 int count = 5; //数目 double unit; //单价 int total_int = (int)total; unit = total / count; printf("total=%lf, total_int=%d, unit=%lf\n", total, total_int, unit); return 0; }
Perhatikan baris ke-6 kod Jumlah pembolehubah ditukar kepada jenis int sebelum ditugaskan kepada pembolehubah total_int. Penukaran ini tidak Jenis dan nilai jumlah pembolehubah itu sendiri tidak terjejas. Jika nilai jumlah berubah, maka hasil keluaran jumlah akan menjadi 400.000000 jika jenis jumlah berubah, maka hasil keluaran unit akan menjadi 80.000000;
Pengetahuan lanjutan: Penukaran aritmetik yang biasa digunakan
Penukaran aritmetik biasa ialah memaksa nilai secara tersirat kepada jenis yang sama. Pengkompil mula-mula 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> int 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 Ia adalah mula-mula ditukar kepada integer, tetapi memandangkan nilai akhir ialah apungan, penukaran aritmetik biasa digunakan, dan pengkompil menukar i dan c kepada terapung dan menambahkannya untuk mendapatkan nombor titik terapung.
[Cadangan berkaitan: Tutorial video bahasa C, Pengajaran pengaturcaraan]
Atas ialah kandungan terperinci Bagaimana untuk melakukan penukaran jenis paksa dalam bahasa C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!