Memahami Percanggahan Saiz Aksara Antara C dan C
Apabila berurusan dengan aksara dalam C dan C , pengaturcara sering menghadapi percanggahan yang mengelirukan dalam saiz mereka. Dalam C, ungkapan sizeof('a') menghasilkan nilai 4, manakala dalam C , ia mengembalikan 1. Perbezaan yang membingungkan ini berpunca daripada perbezaan asas dalam cara aksara dilayan dalam bahasa ini.
Pemalar Aksara dalam C
Dalam C, aksara biasanya diwakili sebagai integer, dirujuk sebagai aksara pemalar. Pemalar ini disimpan dalam integer 32-bit, memberikan mereka saiz 4 bait. Ini jelas dalam ungkapan sizeof('a') dalam C, yang menilai kepada 4. Walau bagaimanapun, nilai sebenar yang disimpan dalam integer ini ialah kod ASCII bagi aksara, iaitu 97 untuk 'a'.
Jenis Aksara dalam C
Tidak seperti C, C memperkenalkan jenis aksara khusus untuk mewakili aksara. Jenis ini berbeza daripada integer dan hanya menduduki satu bait, seperti yang ditentukan oleh sizeof(char). Oleh itu, apabila 'a' digunakan dalam C , ia dianggap sebagai char literal dan saiznya dilaporkan dengan betul sebagai 1.
Sebab Sejarah
Percanggahan antara saiz aksara dalam C dan C mempunyai akar sejarah. Dalam sistem pengkomputeran awal, integer 32-bit adalah norma, dan C secara semula jadi menerima pakai konvensyen ini untuk aksara. Walau bagaimanapun, apabila sistem berkembang dan memori menjadi lebih banyak, jenis aksara khusus muncul dalam C , menawarkan storan yang lebih cekap untuk aksara.
Implikasi untuk Pengaturcara
Perbezaan ini dalam saiz aksara boleh memberi implikasi kepada pengaturcara yang bekerja dengan projek merentas bahasa atau kod port antara C dan C . Pembangun mesti mengetahui semantik yang berbeza bagi pemalar aksara dalam bahasa ini untuk mengelakkan tingkah laku atau ralat yang tidak dijangka.
Atas ialah kandungan terperinci Mengapakah `sizeof('a')` Mengembalikan 4 dalam C tetapi 1 dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!