找到输出?

时间:2015-08-08 17:44:13

标签: c pointers

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

#include <stdio.h>

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

1 个答案:

答案 0 :(得分:6)

您将获得构成int的“第一个”字节的数值,其值为320.

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

  • 小端输出:64
  • Big-endian输出:0
  • 中端输出:天知道

以下是little-endian,two's-complement系统上32位int的字节组件:

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

这是一个荒谬的考试问题,除非它的目的是测试你是否能够正确地提供答案“这是荒谬的;永远不要在现实生活中这样做。”