在C语言中,有一个未知类型的变量,如果要把它的值传递给i,那么i如何定义呢?

2024-12-24 16:59:14
推荐回答(5个)
回答1:

//正确的做法是用联合类型

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 ; //这里表出错,但是一般不会出错

回答2:

假如变量时a;
int nLen = sizeof(a);
i可以写成char*类型的,char* i = new char[nLen] ;
memcpy(i, &a, nLen);
这就是无脑的拷贝,你用的时候 可以再反拷贝回去;

回答3:

c语言不存在未知类型的变量...
你可以用gdb设断点查看变量类型

回答4:

这个应该是不可能的吧?未知类型不存在于C语言中的,你可以调试去看下变量究竟是什么类型的.常用的无非就是int,double,float,struct...

回答5:

union {
int i_;
char c_;
double d_;
/*其他各种可能的类型*/
} i ;