📜  C 程序的输出 | 14套

📅  最后修改于: 2022-05-13 01:56:11.238000             🧑  作者: Mango

C 程序的输出 | 14套

预测以下 C 程序的输出。
问题 1

C
#include
int main()
{
   int a;
   char *x;
   x = (char *) &a;
   a = 512;
   x[0] = 1;
   x[1] = 2;
   printf("%d\n",a);
 
   getchar();
   return 0;
}


C
int main()
{
  int f = 0, g = 1;
  int i;
  for(i = 0; i < 15; i++)
  {
    printf("%d \n", f);
    f = f + g;
    g = f - g;
  }
  getchar();
  return 0;
}


C
int func(int i)
{
  if(i%2) return (i++);
  else return func(func(i-1));
}


答:输出取决于机器的字节序。小端机器的输出为 513,大端机器的输出为 258。
让整数使用 16 位存储。在小端机器中,当我们执行 x[0] = 1 和 x[1] = 2 时,数字 a 变为 00000001 00000010,这是小端机器中 513 的表示。 32 位数字的输出也相同。
在 big endian 机器中,当我们执行 x[0] = 1 和 x[1] = 2 时,数字更改为 00000001 00000010,这是 big endian 机器中 258 的表示。
问题2

C

int main()
{
  int f = 0, g = 1;
  int i;
  for(i = 0; i < 15; i++)
  {
    printf("%d \n", f);
    f = f + g;
    g = f - g;
  }
  getchar();
  return 0;
}

答案:该函数打印前 15 个斐波那契数。
问题 3
解释以下函数。

C

int func(int i)
{
  if(i%2) return (i++);
  else return func(func(i-1));
}