因为在我思维中,flag 是 unsigned char 型数据。要先将 flag 强制转为 unsigned int 型数据才能把 flag 中低8位数据往左移8位。而语句 resulte = (unsigned int)(flag << 8); 中我理解顺序先是 unsigned char flag 8位数据往左移8位,目前应该是 0x00 了,然后再强制转换为 unsigned int 类型数据,最终赋给 result 的值是 unsigned int 型的 0 。这样看来,MAX6675送给单片机的温度值就应该是错误的。刚算了一下就算没问题在串口助手里最大也只能打印出64出来。没有发现这问题之前我试过用打火机把K型热电偶探头加热到一百多度在串口助手里打印出来。