0

我使用哪种数据类型来存储以下值?

价值:86400

代码

int d[6];
unsigned int all;
d[0] = 8;
d[1] = 6;
d[2] = 4;
d[3] = 0;
d[4] = 0;

all =  10000*d[0] + 1000*d[1] + 100*d[2] + 10*d[3] +  d[4];
printf("%u", all);

如果我将此代码复制到 CodeBlocks,它可以正常工作。但是,在 MPLAB C18 编译器上,我会得到不同的结果。

代码块输出:86400

MPLAB 输出:20864

你如何解决它?谢谢!

4

1 回答 1

1

类型int不保证是 32 位,它可能是例如 16 位(即,具有从 0 到 65535 的值unsigned int)。这里就是这种情况。您需要在long此处使用类型。

于 2013-05-07T01:58:00.777 回答