编程时遇到此类报错
error: aggregate value used where an integer was expected
printf("t1 = %d\n",(unsigned char)t1);
原因是:
C语言的类型强制转换只有在数量类型之间才能进行转换,结构类型(包括 union,struct)不是数量类型(Scalar Type),无法进行强制转换;
数量类型包括算术类型和指针类型,算术类型由包括整数类型和浮点类型。
可以用union来代替数据转换
我一般用union代替类型转换
union {
long l;
struct {
long a:10;
loing b:10;
long c:12
}bits;
}