我很困惑这个代码是如何打印它做什么用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欣赏它 –