Rumah > pembangunan bahagian belakang > C++ > Mengapakah `sizeof('a')` Mengembalikan 4 dalam C tetapi 1 dalam C ?

Mengapakah `sizeof('a')` Mengembalikan 4 dalam C tetapi 1 dalam C ?

Linda Hamilton
Lepaskan: 2024-12-29 12:28:10
asal
638 orang telah melayarinya

Why Does `sizeof('a')` Return 4 in C but 1 in C  ?

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan