c - 这在 C 中打印什么以及如何打印?

标签 c printing output

我对这段代码如何打印它在 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,

为什么输出是这样的?

一些可能有用的信息:

  1. 字节顺序为小尾数
  2. 数组arr第一个元素的地址是0x00
  3. 短为 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/

相关文章:

c - 在 C 中先于父执行子

c++ - fcntl() 用于线程或进程同步?

c++ - LuaL_openlibs() 和沙盒脚本

python - 如何在按住某个键时继续打印字符串

java - 使用java查找c文件中的宏变量

asp.net - 需要有关 asp.net 中打印的帮助(需要从打印页面中删除日期时间)

php - 如何使用 FPDF 和 PHP 进行静默打印

xslt - exsl :document - trying to generate output file

java - FilterOutpuStream是否正常写入?

C# 首次拟合算法输出