(纯C语言语法问题)菜鸟提问两个在2541例程SimpleBLEPeripheral中的代码细节问题。
时间:10-02
整理:3721RD
点击:
1、在读取ADC转换结果中,把ADCH放到 int16 reading变量的高八位是这样做的:
我的问题是:
ADCH相当于是一个字节(8bits)的变量,先是左移8位后,值变成了0x00(16进制),然后在进行(int16)强制转换,高位用0补充,值变成了0x0000(16进制),那么reading的高八位不就是0x00(16进制)吗?怎么就实现了ADCH的值赋给了reading的高八位?
2、直接上图:
我的问题是:
对于这句 (uint8 *)pAttr->pValue; 我是这样理解的。先将 结构体指针变量pAttr 强制转换成 无符号字符型指针,然后pAttr是无符号字符型变量指针了,怎么能指向结构体成员pValue?
1: C编译器先拓展数据类型,然后再移位
2: 先取值,再强制转换
有空翻翻C高质量编程