Re: [問題] 函式傳不回計算後的值

看板C_and_CPP (C/C++)作者 (坐吃山空)時間10年前 (2015/09/11 21:38), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
: 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

09/11 22:04, , 1F
感謝,因為以前都用int函式,所以不知道有此問題
09/11 22:04, 1F

09/12 22:09, , 2F
原來要先宣告啊.....,我也不知道
09/12 22:09, 2F
文章代碼(AID): #1LyjbNJB (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1LyjbNJB (C_and_CPP)