//正确的做法是用联合类型
union
{
char a ;
short b ;
long c ;
double d ;
} i ;
//设x是该未知变量
if (sizeof (x) == sizeof (char))
i.a = (char) x ;
else if (sizeof (x) == sizeof (short))
i.b = (short) x ;
else if (sizeof (x) == sizeof (long))
i.c = (long) x ;
else if (sizeof (x) == sizeof (double))
i.d = (double) x ;
else
return -1 ; //这里表出错,但是一般不会出错
假如变量时a;
int nLen = sizeof(a);
i可以写成char*类型的,char* i = new char[nLen] ;
memcpy(i, &a, nLen);
这就是无脑的拷贝,你用的时候 可以再反拷贝回去;
c语言不存在未知类型的变量...
你可以用gdb设断点查看变量类型
这个应该是不可能的吧?未知类型不存在于C语言中的,你可以调试去看下变量究竟是什么类型的.常用的无非就是int,double,float,struct...
union {
int i_;
char c_;
double d_;
/*其他各种可能的类型*/
} i ;