gpt4 book ai didi

c - 如何将数组中的值存储到 MPLAB 上的变量中?

转载 作者:太空宇宙 更新时间:2023-11-04 08:57:04 25 4
gpt4 key购买 nike

以下代码在 CodeBlocks 编译器上运行良好,但在 MPLAB C18 编译器上我没有得到相同的结果。我正在使用 PIC18 微 Controller 。

代码

    int d[6];
int all;

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

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

CodeBlocks 上的输出:64800

MPLAB 输出:-816

究竟是什么问题?这段代码不应该工作正常吗?谢谢!

最佳答案

int 类型的对象不能保证能够存储超过 -3276732767 的值。您的 Code::Blocks 实现恰好扩展了这个范围,但是您的 MPLAB C18 实现(顺便说一下,这并不是真正有效的 C 实现)。您在 MPLAB 实现中看到的是由于有符号整数溢出导致的未定义行为。使用 unsigned 类型和/或更宽的类型,例如 longlong long。不要忘记相应地修改您的 printf 格式说明符。 %u 代表unsigned int%ld 代表long%lu 代表unsigned long, %lld for long long, 等等...

关于c - 如何将数组中的值存储到 MPLAB 上的变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16403009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com