使用联合和标签

时间:2018-08-13 19:36:48

标签: c++ unions

我们如何使用c ++中的联合来知道给定的输入是int还是char?

请保持程序简单。

我怎么才能真正知道给定的输入是char还是int,以便执行特定的操作?

我基本上了解到,在char数组中,当我输入两位数时,该数组仅使用第一个数字,是否有任何正确的方法,或者我只需要使用并集?

1 个答案:

答案 0 :(得分:2)

工会无法区分您放入的数据类型。当这很重要时(在大多数情况下是什么情况),并且您不希望将其合并为强制类型转换,那么您需要存储放入的数据类型在。 例如,

typedef union
{
   int a;
   char b[4];
} myUn;

现在可以了

myUn mu;
mu.a=42;
char c=mu.b[0];

,您的编译器不会抱怨。因此,您需要在更远的位置存储输入的类型(如果重要)。

例如

typedef struct
{
   myUn mu;
   int type;
}

并使用您输入的内容进行类型编码。但这只是一个非常基本的解决方案,您应该问为什么要在此处使用并集。