c - 无法理解在 little endian 机器中以 c 语言进行类型转换后产生的输出

标签 c pointers casting

<分区>

下面是 C 程序,输出是 201。我不知道这怎么可能。请解释一下。

#include <stdio.h>
  int main() {
    int number = 288;
    char * ptr;
    ptr = (char * ) & number;
    printf("%x", * ptr);
    ptr++;
    printf("%x", * ptr);
    return 0;
  }

这是在小端机器的情况下。这个问题是在 geeksforgeeks 上的 MCQ 竞赛中提出的。但他们没有提供任何解释。

最佳答案

201 是完全合理的(在小端系统上):

变量 number 以这两个字节开始(在小端系统上):0x20、0x01。

关于c - 无法理解在 little endian 机器中以 c 语言进行类型转换后产生的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54378750/

相关文章:

c - 显式转换如何在 C 中工作?

c++ - 如何在 boost.python 中转换 std::string* ?

c - 如何通过欧几里德算法计算两个数的gcd

c - C 中的默认枚举值是否对所有编译器都相同?

c++ - const-correctness 是否给编译器更多的优化空间?

c++使用指针和状态机构建递归树

c - 与 C 中的结构和指针相关的问题

C - feof 和 fseek 替换/等效代码?

c# - 转换字典<int, List<User>>

c - 在数据类型之间切换