1、下面程序输出结果
int fun(int x)
{
static int temp = 2;
temp += x;
return temp;
} int main(int argc, char *argv[])
{
int k = 2, m = 1, ret;
ret = fun(k);
ret += fun(m);
printf("%d\n", ret);
}
答
9
2、下列程序的执行结果是什么,为什么?
int main(int argc, char *argv[])
{
int data1 = -16;
unsigned int data2 = 4;
printf("%d\n", data1 + data2);
(data1 + data2) > 0 ? printf("> 0\n") : printf("< 0\n");
system("pause");
return 0;
}
答
-12 >0
3、从键盘输入abc def后,输出为多少
int main(int argc, char *argv[ ])
{
char *p, *q;
p = (char *)malloc(sizeof(char) * 20);
q = p;
scanf("%s%s", p, q);
printf("%s %s\n", p, q);
}
答
def def
4、32位操作系统下,下面程序的输出结果?
struct s1
{
char ch, *q;
union str
{
short a;
short b;
int c:2, d:1;
}str;
};
struct s1 t;
struct s1 *p; int main(int argc, const char *argv[])
{
printf("%d\n", sizeof(t));
p = &t;
p->str.a = 12;
p->str.b = 13;
printf("%d\n", p->str.c);
printf("%d\n", p->str.d);
p->str.a = (p->str.a) ^ 5;
p->str.b = (p->str.a) | 5;
printf("%d\n", p->str.a);
}
答
12 1 -1 13
5、编写一个程序来检查该系统是采用的大端模式还是小端模式?
答
#include <stdio.h>
int main() {
union {
int num;
char bytes[sizeof(int)];
} test;
test.num = 1;
if (test.bytes[0] == 1) {
printf("System is using little-endian mode\n");
} else {
printf("System is using big-endian mode\n");
}
return 0;
}