关于C语言的强制转换

编程时遇到此类报错

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;
}

猜你喜欢

转载自blog.csdn.net/swj9099/article/details/81359690
今日推荐