Mengapakah aksara C integer literal dan bukan aksara?
Dalam dunia pengaturcaraan, aksara biasanya diwakili oleh integer bait tunggal. Ini benar untuk kebanyakan bahasa pengaturcaraan, termasuk C. Walau bagaimanapun, literal aksara C adalah pengecualian kepada peraturan ini. Mereka sebenarnya diwakili sebagai integer, bukannya aksara. Ini boleh memeranjatkan bagi pendatang baru dalam bahasa itu, yang mungkin menjangkakan literal aksara akan berkelakuan seperti aksara.
Rasional di sebalik keputusan reka bentuk ini berakar umbi dalam sejarah bahasa C. Apabila Dennis Ritchie sedang membangunkan C, dia mahu mengekalkan bahasa itu sekecil dan cekap yang mungkin. Satu cara dia melakukan ini ialah dengan mewakili literal aksara sebagai integer. Ini membolehkannya menjimatkan ruang dan ingatan, yang merupakan kebimbangan kritikal pada masa itu.
Walaupun keputusan reka bentuk ini mungkin masuk akal pada masa itu, ia boleh menjadi punca kekeliruan bagi pengaturcara hari ini. Sebagai contoh, kod berikut akan mencetak nilai 97:
printf("%d", 'a');
Ini kerana 'a' diwakili sebagai integer dan fungsi printf() menjangkakan integer sebagai hujahnya. Jika anda ingin mencetak aksara 'a', anda perlu menggunakan penentu format %c:
printf("%c", 'a');
Ini akan mencetak aksara 'a', seperti yang dijangkakan.
Perbezaan antara literal aksara dan integer juga boleh menjadi penting apabila bekerja dengan penunjuk. Sebagai contoh, kod berikut akan mencipta penunjuk kepada integer:
int *p;
Walau bagaimanapun, kod berikut akan mencipta penunjuk kepada aksara:
char *p;
Ini kerana 'a ' diwakili sebagai integer, dan pengkompil akan membuat kesimpulan bahawa p ialah penunjuk kepada integer. Jika anda ingin mencipta penunjuk kepada aksara, anda perlu menggunakan sintaks berikut:
char *p = "a";
Ini akan mencipta penunjuk kepada aksara 'a'.
Perbezaan antara aksara literal dan integer boleh menjadi agak mengelirukan pada mulanya, tetapi penting untuk memahami jika anda ingin menulis kod C yang betul. Dengan mengikuti petua di atas, anda boleh mengelakkan perangkap biasa dan menulis kod yang cekap dan betul.
Atas ialah kandungan terperinci Mengapakah Huruf C Watak Diwakili sebagai Integer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!