读书人

C语言运算中的 数值类型冲突 的有关问

发布时间: 2012-04-05 12:42:40 作者: rapoo

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); //忽略千分位

读书人网 >C++

热点推荐