我在file1.c中有一個名爲dump的函數。c函數返回丟失精度
void dump(unsigned long val, unsigned char raw){
unsigned long dec = 0;
dec = hex(val);
}
十六進制函數在file2.c中。
unsigned long hex(unsigned long hex){
unsigned long result;
...
return result;
}
由於某些原因,dec變量只包含2字節的數據。如果將十六進制函數放在與轉儲函數相同的文件中,它將包含所有數據。 dec變量是局部變量,並且不在其他地方使用。 有人知道爲什麼會發生這種情況嗎?
如果我把十六進制函數放在file1.c中,它會給出正確的輸出。所以十六進制函數中的邏輯正在工作。
我們需要看'hex'的代碼 –
_尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及重現它所需的最短代碼在問題本身。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建一個最小,完整和可驗證的示例._ –
有關'unsigned long hex'的信息告訴我,OP幾乎對數學和計算的每個方面都感到困惑。 –