我们如何使用c ++中的联合来知道给定的输入是int还是char?
请保持程序简单。
我怎么才能真正知道给定的输入是char还是int,以便执行特定的操作?
我基本上了解到,在char数组中,当我输入两位数时,该数组仅使用第一个数字,是否有任何正确的方法,或者我只需要使用并集?
答案 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;
}
并使用您输入的内容进行类型编码。但这只是一个非常基本的解决方案,您应该问为什么要在此处使用并集。