【发布时间】:2016-09-19 12:10:20
【问题描述】:
我在 file1.c 中有一个名为 dump 的函数。
void dump(unsigned long val, unsigned char raw){
unsigned long dec = 0;
dec = hex(val);
}
hex函数在file2.c中
unsigned long hex(unsigned long hex){
unsigned long result;
...
return result;
}
由于某种原因,dec 变量只包含 2 个字节的数据。如果我将十六进制函数与转储函数放在同一个文件中,则它包含所有数据。 dec 变量是局部变量,不在其他任何地方使用。 有人知道为什么会这样吗?
如果我将 hex 函数放在 file1.c 中,它会给出正确的输出。所以十六进制函数中的逻辑是有效的。
【问题讨论】:
-
我们需要查看
hex的代码 -
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码.没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整且可验证的示例。
-
关于
unsigned long hex的事情告诉我,OP 对数学和计算的几乎所有方面都感到困惑。 -
我敢打赌,如果你在编译时出现警告,你的编译器会准确地告诉你哪里出了问题。特别是您在 file1.c 中没有十六进制原型。
-
您在 16 位系统上遇到过这种情况吗?
标签: c function return precision