我很困惑這個代碼是如何打印它做什麼用C這是什麼在C打印,以及如何?
#include <stdio.h>
void print_elements(int i) {
int j;
short arr[3] = {0x01,0x02,0x03};
char * ptr = (char *)arr;
for(j=0;j<=i;j++){
printf("\n %x,", *(ptr+j));
}
}
main() {
print_elements(4);
}
它打印出:
1,
0,
2,
0,
3,
爲什麼輸出這樣看?
某些信息,這可能是有用的:
- 字節排序是小端
- 陣列ARR的第一個元素的地址爲0x00
- 短爲2字節
所以澄清..它是按字節打印字節,但爲什麼它分開處理在0×01的0和1?他們不是3入門數組中的一個入口嗎? –
它不「分開處理」。 '0x01'只是'1'。但它存儲在2個字節(在你的機器上的「短」的大小)。其中一個字節的值爲0,另一個的值爲1. – ooga
謝謝! :D欣賞它 –