📜  C 程序的输出 |第 44 组(结构和联合)

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

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