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

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

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

先决条件:结构和联合

QUE.1 这段代码的输出是什么?

#include 
using namespace std;
typedef struct s1 {
    int a;
    float b;
    union g1 {
        char c;
        double d;
    };
} new1;
int main()
{
    cout << sizeof(new1);
    return 0;
}

(一)17
(b)16
(c)8
(d)9
输出:

(c) 8

说明:在 Struct 块中,它添加了 float 和 int 的大小,因此大小为 8,然后在 union 中,它仅声明但未初始化,因此在输出中给出了 8。

QUE.2 这个问题的输出是什么?



#include 
    using namespace std;
    typedef struct s1 {
        int a;
        float b;
        union g1 {
            char c;
            double d;
        } new2;
    } new1;
    int main()
    {
        cout << sizeof(new1);
    }

(一)17
(b)16
(c)8
(d)9
输出:

(b)16

说明:在 Struct 块中,它添加了 float 和 int 的大小,因此大小为 8 然后在 union 中,我们在此块中定义和声明两者,因此 union 给出 8,因此它在输出中给出 16。

QUE.3 这个问题的结果是什么?

#include 
    using namespace std;
    typedef struct s1 {
        int a;
        float b;
        union g1 {
            double c;
            double d;
        } new2;
    } new1;
    int main()
    {
        cout << sizeof(new1) << endl;
        new1 obj;
        obj.new2.d = 17;
        obj.new2.c = 20;
        cout << obj.new2.d;
        return 0;
    }

(一)17 20
(b)16 20
(c)16 17
(d)24 20
输出:

(b) 16 20

解释:在这个问题中:在联合中,块包含最大大小的数据类型,如 double 所以内存包含 8 个字节,当我们初始化 'd' 和 'c' 时,'d' 值被 'c' 替换,因为内存块是相同的所以当我们打印 'd' 和 'c' 值时,它会打印 20 和我在上面的例子中解释的大小,所以它会打印 16。

QUE.4 这个问题的结果是什么?

#include 
using namespace std;
typedef struct s1 {
    int a;
    float b;
    struct g1 {
        double c;
        double d;
    };
} new1;
int main()
{
    cout << sizeof(new1) << endl;
    return 0;
}

(一)8
(b)16
(c)4
(d)24
输出:

(a)8

说明:在 Struct 块中,它添加了 float 和 int 的大小,因此大小为 8,然后在 struct g1 块中,它仅声明但未初始化,因此总体而言它在输出中给出了 8。

QUE.5 这个问题的结果是什么?

#include 
using namespace std;
typedef struct s1 {
    int a;
    float b;
    struct g1 {
        double c;
        double d;
    } new2;
} new1;
int main()
{
    cout << sizeof(new1) << endl;
    return 0;
}

(一)8
(b)16
(c)4
(d)24
输出:

(d)24

说明:在 Struct 块中,它添加了 float 和 int 的大小,因此大小为 8,然后在 struct g1 块中,当时它被声明和初始化,因此它添加了“c”和“d”的大小,因此包含总大小为 24输出为 24。

相关文章 :

  • C 程序的输出 |第 44 组(结构和联合)
  • 结构与联合测验
  • C 结构和 C++ 结构的区别