Dalam dunia pengaturcaraan, jenis data memainkan peranan penting dalam menentukan cara pembolehubah disimpan dan ditafsirkan. Dalam kes literal aksara, seseorang mungkin mengharapkan ia disimpan sebagai aksara (jenis data char) dalam kedua-dua C dan C. Walau bagaimanapun, dalam C, literal aksara secara mengejutkan dianggap sebagai integer (jenis data int). Keanehan ini menimbulkan persoalan: mengapakah C aksara literal int dan bukannya aksara?
Dalam C , saiz operator membolehkan kita menentukan saiz jenis data dalam bait. Seperti yang dijangkakan, sizeof('a') mengembalikan 1, menunjukkan bahawa aksara literal 'a' disimpan sebagai bait tunggal. Ini sejajar dengan takrifan standard jenis data char.
Walau bagaimanapun, dalam C, ungkapan sizeof('a') yang sama menghasilkan hasil yang mengejutkan: ia mengembalikan sizeof(int). Ini mendedahkan bahawa literal aksara C secara dalaman diwakili sebagai integer.
Sebab tingkah laku ini boleh dikesan kembali kepada evolusi sejarah C. Dalam versi awal C, literal aksara disimpan sebagai integer terutamanya kerana kamiran peraturan promosi C menyukarkan untuk menggunakan nilai aksara tanpa terlebih dahulu mempromosikannya kepada integer. Untuk menyelaraskan proses ini, pemalar aksara disimpan terus sebagai integer.
Selain itu, C menyokong pemalar berbilang aksara yang diwakili sebagai 'abcd' (disertakan dalam petikan tunggal). Pemalar ini disimpan dalam integer untuk menampung kedua-dua aksara individu dan jujukan aksara.
Walaupun konteks sejarah ini menerangkan asal usul kebiasaan ini, ia tidak membenarkan sepenuhnya mengapa ia dikekalkan dalam versi C berikutnya. boleh dikatakan bahawa mengekalkan keserasian ke belakang telah memainkan peranan dalam mengekalkan tingkah laku ini utuh, membenarkan kod sedia ada untuk terus berjalan tanpa pengubahsuaian.
Kesimpulannya, literal aksara C disimpan sebagai integer atas sebab sejarah. Walaupun ini mungkin kelihatan berlawanan dengan intuisi pada mulanya, ia berpunca daripada evolusi khusus C dan keputusan reka bentuk yang dibuat pada masa itu. Tingkah laku ini telah dikekalkan untuk tujuan keserasian, membolehkan kod lama berjalan dengan lancar tanpa memecahkan keserasian.
Atas ialah kandungan terperinci Mengapakah Huruf C Watak Diperlakukan sebagai Integer Daripada Watak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!