我如何在C中将类型的变量更改为另一个?

dri*_*ker 7 c types casting

我要做:

int main () {
  bla bla bla

  void *onetype;

  switch (USER_INPUT_TYPE) {

      CASE CONVERT_TO_CHAR:
          convert onetype VOID TO CHAR >>> HOW???

      CASE CONVERT_TO_INT:
          convert onetype VOID TO INT >>> HOW???

   LOT OF CASES...
   }
}
Run Code Online (Sandbox Code Playgroud)

是的,我知道类型转换,但是类型转换是一种"临时"改变.

那么,有没有办法在C中完成它?

编辑:

停止停止!请看,你在做什么是类型转换,我知道,你正在创建另一个所需类型的变量,如int i =(int)onetype,我不想要这个,我想要其他像onetype =(int )ontyype,不重新创建它们,不分配另一个变量.

非常感谢!

Yan*_*min 7

你想要的是运行时类型信息 - 有一个变量,其中类型只能在运行时确定.C在语言中没有此功能 - 一旦编译程序,类型将被删除,并且只存在内存blob.动态语言维护类型信息并本地实现.

您可以设计自己的本土类型标记系统:

typedef union {
int i;
char c;
float f;
} evil;

typedef struct {
  evil value;
  int type;
} tagged_t;

enum {
  TYPE_INT, TYPE_CHAR, TYPE_FLOAT
};

tagged_t bar;
bar.value.c = 'a';
bar.type = TYPE_CHAR;
Run Code Online (Sandbox Code Playgroud)

现在,每当您希望使用tagged_t类型时,必须为要存储的每种可能类型的变量实现一个条件,或者能够确定是否在该代码区域中允许某种类型.

  • 工会没有任何本质上的邪恶.唯一的邪恶存在于更加复杂的知道如何解释联盟. (3认同)