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));
}