问题不好表述,看个例子应该会好理解些:typedef unsigned int u16;
typedef unsigned char u8;
void Test1(void)
{
u16 temp_u16;
u8 temp1_u8,temp2_u8;
temp1_u8 = 2;
temp2_u8 = 2;
temp_u16 = temp1_u8<<8 + temp2_u8;
}
void Test2(void)
{
u16 temp_u16;
u8 temp1_u8,temp2_u8;
temp1_u8 = 2;
temp2_u8 = 2;
temp_u16 = temp1_u8;
temp_u16 <<=8;
temp_u16 +=temp2_u8;
}
这两个函数最后计算出的temp_u16数值是不一样的,Test1函数中的temp_u16为何和预期的不一样?
按说temp_u16是u16变量,在运算前,temp1_u8和temp2_u8应该会被隐式转换成u16再进行计算。
我想可能是隐式转换的规则没弄清,有哪位比较清楚该问题的麻烦给点意见呗。
|