我被ATTiny2313上的一些变量所困扰。逐句评论我的代码行,罪魁祸首似乎是这个函数的乘法:
int32_t bmp085_b5(int32_t ut) {
int32_t x1, x2;
x1 = (ut - (int32_t) ac6) * ((int32_t) ac5) >> 15;
x2 = ((int32_t) mc << 11) / (x1 + (int32_t) md);
return x1 + x2;
}
评论x1 = ...
行(并将对x1
的引用更改为ut
),或将乘法操作更改为添加操作可修复变量clobbering。具体而言,mc
的高位字节为零。我在这里错过了什么?这可能是非常非常明显和/或愚蠢的事情,但我没有看到它......
变量ac5
和ac6
的类型为uint16_t
,mc
和md
为int16_t
。