我对这段代码如何打印它在 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 个字节
最佳答案
Short 占用两个字节的内存。即 0x01 存储为
01 02 03
你的系统是小端从右到左,即 1 0 2 0 3 0
当您使用 char 指针并将类型转换数组视为 char 时,它一次遍历 1 个字节
你的指针数组看起来像这样1 0 2 0 3 0
因此,在数组的循环中,它按照您请求打印前四个元素的顺序打印,直到 3。
关于c - 这在 C 中打印什么以及如何打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21692386/