指教:下面语句中,变量字节长度的变化

[复制链接]
1094|3
 楼主| hszhzwd 发表于 2020-7-22 19:29 | 显示全部楼层 |阅读模式
本帖最后由 hszhzwd 于 2020-7-22 19:31 编辑

这是W5500.C中的发送双字节数据的函数:
void SPI_Send_Short(unsigned short dt)
{
        SPI_Send_Byte((unsigned char)(dt/256));        //写数据高位
        SPI_Send_Byte(dt);                                                //写数据低位
}
函数形参为unsigned short dt:dt为双字节变量,
SPI_Send_Byte()该函数的形参应为单字节变量,(unsigned char)(dt/256)这样的表示方法就将计算结果变成了单字节了?还有下一个语句的dt,也变成了单字节了?不明白,请指明理论依据。谢谢。
yueguang3048 发表于 2020-7-23 10:27 | 显示全部楼层
不懂编程的
  
        SPI_Send_Byte((unsigned char)(dt/256));        //写数据高位
        SPI_Send_Byte(dt);                                       //写数据低位
-----------------------------------------------------------------------------------------------
        SPI_Send_Byte((unsigned char)(dt/256));        //dt/256=dt>>8=dt/2^8 右移一位除以2,左移一位乘以2
        SPI_Send_Byte((unsigned char)(dt));              //调用前面函数,这里是存在一个转化,默认保留低字节8bit
LcwSwust 发表于 2020-7-23 11:01 | 显示全部楼层
看SPI_Send_Byte函数的参数定义,会自动转换过去,一般可直接写SPI_Send_Byte(dt/256);
 楼主| hszhzwd 发表于 2020-7-23 15:10 | 显示全部楼层
谢谢指教,我明白了,这是属于类型转换。写程序较少,第一次遇见类型转换的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

38

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部