C语言运算中的 数值类型冲突 的问题
我定义:float axis_datx; char medium_buf[15] = {0};
memcpy(medium_buf,p2,14);
axis_datx = ((medium_buf[5]>>4)*10 + medium_buf[5]&0x0f+(medium_buf[6]>>4)*0.1); //忽略千分位
这样会报错:Error[Pe031]: expression must have integral type
然后换成这样:
axis_datx = (((medium_buf[5]>>4) + medium_buf[5]&0x0f)*10+(medium_buf[6]>>4)*0.1); //忽略千分位
就可以通过,这是为什么??
[解决办法]
因为加法的优先级比 & 高
这样就可以了:
axis_datx = ((medium_buf[5]>>4)*10 + (medium_buf[5]&0x0f)+(medium_buf[6]>>4)*0.1); //忽略千分位