作者Feis (坐吃山空)
看板C_and_CPP
標題Re: [問題] 函式傳不回計算後的值
時間Fri Sep 11 21:38:27 2015
: Common.c:
: #include <math.h>
: float Common_GetNorm(float* var, unsigned int n) {
: int i;
: double sum = 0.f;
: for (i=0; i<n; ++i) {
: sum += var[i]*var[i];
: }
: return sqrtf(sum);
: }
: main.c:
: #include <stdio.h>
: int main(void) {
: float acc[3];
: acc[0] = 0.01;
: acc[1] = 0.01;
: acc[2] = 1.01;
: float a = Common_GetNorm(acc, 3);
: printf("%f\n", a);
: }
關鍵是在於 main.c 裡面沒有宣告 Common_GetNorm 這個函式就使用了。
所以 Common_GetNorm 在編譯 main.c 的時候會被當作是回傳 int 型別的函式
從 main 的角度他得到的是個 int,但是實際上他得到的是個 float
接著就要看你使用的平台中,用 int 型別去解釋 float 值的結果
你只要在 main 前加上 Common_GetNorm 的宣告就可以了。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.122.83.198
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1441978711.A.4CB.html
推 wtchen: 感謝,因為以前都用int函式,所以不知道有此問題 09/11 22:04
推 qeagle: 原來要先宣告啊.....,我也不知道 09/12 22:09