衆所周知,每個可打印字符都有其ascii值。我試圖將8個字符的ascii值設置爲64位整數,但它只複製32位。C - 複製字符ASCII值爲64位整數
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);
這段代碼有什麼問題嗎?
輸出我想到的是:
integer hold: 0x4141414142424242
但產量:
integer hold: 0x41414141
調高你的警告! –
@CarlNorum解決什麼問題?就編譯器而言,這段代碼很好。 – Lundin
@Lundin,不匹配的printf格式字符串導致未定義的行爲。海灣合作委員會和鏗鏘會發現並警告這個問題。 Clang甚至提供了一個建議的解決方案 –