【问题标题】:Data Types with PIC18?PIC18 的数据类型?
【发布时间】:2013-05-07 01:54:32
【问题描述】:

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

: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

你是怎么解决的?谢谢!

【问题讨论】:

标签: c microcontroller pic mplab


【解决方案1】:

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

【讨论】:

  • 我也用了很长时间,得到了与 20864 相同的结果,这很奇怪。
  • @Ammar 您需要将long 用于both 变量。
  • @Ammar 当然你需要将printf格式修改为"%lu"
  • 你可能是对的,我现在没有 PIC18 来确认它,但我明天会的。如果我使用long,我的说明符不应该只是%l吗?
  • @Ammar 好吧,all 应该是 unsigned long,否则它是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 2016-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-12
相关资源
最近更新 更多