XC16理解的对? 还是我理解的对?

2020-02-06 09:59发布

最近发现一个很有趣的事情

程序如下:
{
unsigned long I;
unsigned char J = 1000;


.
.
.
I += J*100;

}

结果呢,J*100是超出了16位的数字,但是呢,I中超出16位的进位没了!

我的理解是 这条公式里面的类型转换,也就是J*100,应该是unsigned long类型的,二不应该是unsigned int类型的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
TBG3
2020-02-07 10:59
OK, 表达式错误, 改成

unsigned char J=100;

I += J*1000;

那么有
(1) I +=  J*1000;
等效于
(2) I = I + J*1000;

在(2)里面,J*1000应该是 unsigned long格式。

那么,在式(1)里面, J*1000就不是 unsigned long了?

标注一下, PIC24里面,long是32位, int 是16位。

一周热门 更多>