Seperti kita ketahui bersama, setiap karakter yang dapat dicetak memiliki nilai ascii masing-masing. Saya mencoba nilai ascii 8 karakter menjadi bilangan bulat 64 bit, tetapi hanya menyalin 32 bit.
char * ch = "AAAABBBB";
unsigned long int i;
//copy charater's ascii to 64 bits int
memcpy(&i, ch, 8);
printf("integer hold: 0x%x\n", i);
Apakah ada yang salah dengan kode ini?
Output yang saya harapkan adalah:
integer hold: 0x4141414142424242
tetapi hasilnya adalah:
integer hold: 0x41414141
%x
untukunsigned int
, bukanunsigned long int
. Ketidakcocokan selalu tidak ditentukan, meskipun salah satu atau semua implementasi menghasilkan sesuatu yang wajar. Saya akan mengambil keluaran peringatan dan menempelkannya di sini saat berikutnya saya menggunakan komputer. - person Carl Norum   schedule 06.02.2013%x
dengan%lx
. - person Carl Norum   schedule 06.02.2013-W
apa pun. Pesan-pesan ini dihasilkan secara default dengan GCC 4.2.1 (yang lama, saya tahu, tapi saya menggunakan Mac) dan dentang 3.2. - person Carl Norum   schedule 06.02.2013