加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 施放到联盟

发布时间:2020-12-16 09:48:38 所属栏目:百科 来源:网络整理
导读:由于在C中的工会经验有限,我很难理解转换为该数据类型的基本机制. 假设Type_a和Type_b两种类型分别是int和long类型的包装器. 联合定义为: union Type_u { Type_a a; Type_b b;} 现在我有类型Type_a的东西,让我们称之为j(只是让人困惑).我需要将它传递给一个
由于在C中的工会经验有限,我很难理解转换为该数据类型的基本机制.

假设Type_a和Type_b两种类型分别是int和long类型的包装器.

联合定义为:

union Type_u {
    Type_a a;
    Type_b b;
}

现在我有类型Type_a的东西,让我们称之为j(只是让人困惑).我需要将它传递给一个期望Type_u类型的参数的函数:

void burninate(Type_u peasants);

将此变量j传递给burninate的正确方法是什么? (我遇到了将j转换为Type_u以及按原样传递它的问题.都没有编译.)

值得指出的是,我没有能力修改联合类型(或Type_a或Type_b或者burninate的签名).

解决方法

由于Type_a是第一个元素,您可以像这样初始化一个联合:

Type_a j;
Type_u u = {j};
burninate(u);

如果要传递Type_b类型:

Type_b k;
Type_u u;
u.b = k;
burninate(u);

C和C在这方面有所不同.在C99中,您可以使用指定的初始化程序来初始化不是第一个的元素.

Type_b k;
Type_u u = {.b = k};
burninate(u);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读