我有一个给定的代码,我认为该代码有问题:我在 XINU 下编译。
下一个变量是相关的:
unsigned long ularray[];
int num;
char str[100];
有一个函数返回int:
int func(int i)
{
return ularray[i];
}
现在代码是这样的:
num = func(i);
sprintf(str, "number = %lu\n", num);
printf(str);
问题是我在使用 %lu 打印时得到大数字,这是不正确的。
如果我将%lu更改为%d,我会得到正确的数字。例如:用 %lu 得到 27654342,而用 %di 得到 26,后者是正确的;
给出了变量,给出了函数的声明,我写了 body 但它必须返回 int;
我的问题是:
我不熟悉'sprintf'也许问题在那里?
我将 unsigned long 分配给 int,然后用 %lu 打印 int,对吗?
我该如何解决这个问题?
提前致谢。
谢谢大家的回答。我只想提一下我在 XINU 下工作,我改变了文件的编译顺序以及你所知道的......它的工作和在 %lu 和 %d 上显示相同的数字。
我很清楚将 'unsigned long' 分配给 int 然后使用 %lu 打印是不正确的编码,可能会导致数据丢失。但正如我所说,给出了代码,我无法更改变量和打印命令。
顺便说一句,我没有错误或警告。我不知道为什么更改编译顺序可以解决问题,如果有人有想法,欢迎分享。
我要感谢所有试图帮助我的人。