c - 找到 的输出?

标签 c pointers

这是我们的一次分类考试中给出的问题。 解释以下代码的输出...

#include <stdio.h>

int main(void)
{
   int i = 320;
   char *ptr = (char *)&i;
   printf("%d", *ptr);
   return 0;
}

最佳答案

您将获得组成 int 的“第一个”字节的数值,值为 320。

精确的输出取决于 endianness您的平台:

  • 小尾数输出:64
  • 大端输出:0
  • 中端输出:天知道

以下是小端字节序上 32 位 int 的八位字节组件,two's-complement系统:

  • 八位字节#0:0x40
  • 八位字节#1:0x01
  • 八位字节#2:0x00
  • 八位字节#3:0x00

(一个八位字节是一个 8 位字节。您的平台可能将八位字节作为 char,但是更奇特的平台,具有更大的 CHAR_BIT 值,确实存在。)

关于c - 找到 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31896798/

相关文章:

c - 使用 libavformat 和 libswscale 提取视频帧图像给出翻转图像

调用 pthread_create 错误 - 预期主表达式在 'void' 之前

go - 指针 (GoLang)

c++ - 什么是智能指针,我应该什么时候使用它?

c - 我应该如何在 C 结构中声明字符串?

c++ - __attribute__((destructor)) 在 VC 中等效?

c++ - 如何使用来自 boost.python 的 -fPIC 编译静态库

c++ - 了解引用与指针。为什么这行得通?

c - 重新分配更改的指针引用

通过套接字发送后,C 结构未获取填充值