Kembali ketika C sedang ditulis, bahasa assembly MACRO-11 PDP-11 memiliki:
MOV #'A, R0 // 8-bit character encoding for 'A' into 16 bit register
Hal semacam ini cukup umum dalam bahasa assembly - 8 bit rendah akan menampung kode karakter, bit lain dihapus ke 0. PDP-11 bahkan memiliki:
MOV #"AB, R0 // 16-bit character encoding for 'A' (low byte) and 'B'
Ini memberikan cara yang mudah untuk memuat dua karakter ke dalam byte rendah dan tinggi dari register 16 bit. Anda kemudian dapat menulisnya di tempat lain, memperbarui beberapa data tekstual atau memori layar.
Jadi, gagasan tentang karakter yang dipromosikan ke ukuran register cukup normal dan diinginkan. Tapi, katakanlah Anda perlu memasukkan 'A' ke dalam register bukan sebagai bagian dari opcode hard-coded, tetapi dari suatu tempat di memori utama yang berisi:
address: value
20: 'X'
21: 'A'
22: 'A'
23: 'X'
24: 0
25: 'A'
26: 'A'
27: 0
28: 'A'
Jika Anda hanya ingin membaca 'A' dari memori utama ini ke dalam register, mana yang akan Anda baca?
Beberapa CPU mungkin hanya secara langsung mendukung pembacaan nilai 16 bit ke dalam register 16 bit, yang berarti pembacaan pada 20 atau 22 kemudian akan membutuhkan bit dari 'X' dihapus, dan tergantung pada endian dari CPU satu atau lainnya perlu beralih ke byte orde rendah.
Beberapa CPU mungkin memerlukan pembacaan yang diselaraskan dengan memori, yang berarti bahwa alamat terendah yang terlibat harus kelipatan dari ukuran data: Anda mungkin dapat membaca dari alamat 24 dan 25, tetapi tidak 27 dan 28.
Jadi, kompiler yang menghasilkan kode untuk mendapatkan 'A' ke dalam register mungkin lebih suka membuang sedikit memori ekstra dan menyandikan nilainya sebagai 0 'A' atau 'A' 0 - tergantung pada endianness, dan juga memastikannya disejajarkan dengan benar ( yaitu tidak pada alamat memori yang aneh).
Dugaan saya adalah bahwa C hanya membawa tingkat perilaku CPU-sentris ini ke atas, memikirkan konstanta karakter yang menempati ukuran register memori, membawa penilaian umum C sebagai "assembler tingkat tinggi".
(Lihat 6.3.3 di halaman 6-25 dari http://www.dmv.net/dec/pdf/macro.pdf )