今天调程序时,打算使用强制类型转换的方式,把一个32位的数值(无符号)转换成8位的数值(无符号)。
代码为:
cInputBuf[0] =uint8_t((GPIO_DATA_PORT->ODR)&0x00FF);
结果编译错误为:
src\main.c(52): error: #254: type name is not allowed
仔细看了一下,原来,强制类型转换,需要把类型名用括号括起来。
正确的用法为:
cInputBuf[0] =(uint8_t)((GPIO_DATA_PORT->ODR)&0x00FF);
强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。自动转换是在源类型和目标类型兼容以及目标类型广于源类型时发生一个类型到另一类的转换。
例如: (float) a 把a转换为实型,(int)(x+y) 把x+y的结果转换为整型。
看来:写程序就要认真,不能少个分号(;),更不能少个括号()。