C 程序的输出 |第 44 组(结构和联合)
先决条件:结构和联合
QUE.1 这个程序的输出是什么?
C
#include
struct sample {
int a = 0;
char b = 'A';
float c = 10.5;
};
int main()
{
struct sample s;
printf("%d, %c, %f", s.a, s.b, s.c);
return 0;
}
C
#include
int main()
{
struct bitfield {
signed int a : 3;
unsigned int b : 13;
unsigned int c : 1;
};
struct bitfield bit1 = { 2, 14, 1 };
printf("%ld", sizeof(bit1));
return 0;
}
C
#include
int main()
{
typedef struct tag {
char str[10];
int a;
} har;
har h1, h2 = { "IHelp", 10 };
h1 = h2;
h1.str[1] = 'h';
printf("%s, %d", h1.str, h1.a);
return 0;
}
C
#include
struct sample {
int a;
} sample;
int main()
{
sample.a = 100;
printf("%d", sample.a);
return 0;
}
C
#include
int main()
{
union test {
int i;
int j;
};
union test var = 10;
printf("%d, %d\n", var.i, var.j);
}
选项
a) 错误
b) 0, A, 10.5
c) 0, A, 10.500000
d) 无错误,无输出
Answer: a
说明:错误:无法在此处初始化成员。我们只能在结构内部声明成员,不允许在结构声明中用声明初始化成员。
QUE.2 这个程序的输出是什么?
C
#include
int main()
{
struct bitfield {
signed int a : 3;
unsigned int b : 13;
unsigned int c : 1;
};
struct bitfield bit1 = { 2, 14, 1 };
printf("%ld", sizeof(bit1));
return 0;
}
选项
一)4
b) 6
c) 8
d) 12
Answer: a
说明: struct bitfield bit1={2, 14, 1};当我们初始化它时,它只会取一个值,即 int 并且 int 的大小为 4
问。 3 这个程序的输出是什么?
C
#include
int main()
{
typedef struct tag {
char str[10];
int a;
} har;
har h1, h2 = { "IHelp", 10 };
h1 = h2;
h1.str[1] = 'h';
printf("%s, %d", h1.str, h1.a);
return 0;
}
选项
a) 错误
b) IHelp, 10
c) 帮助,0
d) 我帮助,10
Answer : d
说明:可以将一个结构变量复制到另一个结构变量中,例如 h1 = h2。因此 h2 的值。 str 被分配给 h1.str。
QUE.4 输出是什么?
C
#include
struct sample {
int a;
} sample;
int main()
{
sample.a = 100;
printf("%d", sample.a);
return 0;
}
选项
一)0
b) 100
c) 错误
d) 警告
回答
Answer : b
说明:这种类型的声明在 c 中是允许的。
QUE.5 这个程序的输出是什么?
C
#include
int main()
{
union test {
int i;
int j;
};
union test var = 10;
printf("%d, %d\n", var.i, var.j);
}
选项
a) 10, 10
b) 10, 0
c) 0, 10
d) 编译错误
Answer : d