看板 C_and_CPP 關於我們 聯絡資訊
大家好 請問下面程式碼第五行為什麼return要回傳的值是-1? 為什麼不是0 有代表什麼意思嗎 我google都查不到相關的 只好來詢問板上各位大大 int Polynomial_Print(Polynomial *poly) { int cc = 0; int ii; if (poly == NULL) return -1; for (ii = Polynomial_MaxDegree; ii >= 2; ii--) { if (poly->coef[ii] != 0) { if (cc == 0) { printf("%fx^%d", poly->coef[ii], ii); } else { printf("%+fx^%d", poly->coef[ii], ii); } cc++; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 116.241.62.70 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1608107262.A.558.html
loveme00835: 你其他地方的回傳值分別是多少? 12/16 16:29
huhunhiaccc: 謝謝回覆 這個函式庫裡的函式除了宣告void的都是回 12/16 16:35
huhunhiaccc: 傳-1或是多項式的degree值還有一個確認是否為0多項 12/16 16:35
huhunhiaccc: 式的是回傳(1==1) 12/16 16:35
loveme00835: 連 Polynomial_Print() 結尾也是回傳 -1? 因為 int 12/16 16:38
loveme00835: 作為函式回傳值型別是很差的設計, 所以必須藉由程式 12/16 16:38
loveme00835: 碼來推敲設計的目的以及合理性 12/16 16:38
Schottky: 第五行應該是檢查參數,排除不合理或不接受的參數 12/16 16:54
Schottky: 但為什麼是 return -1 要看註解或問原作者 12/16 16:55
Schottky: 畢竟從你剪下的片斷並沒辦法判斷正常應該是return什麼 12/16 16:56
Schottky: 所以你問為什麼不是 0,這個問題我也覺得摸不著頭腦 12/16 16:57
Schottky: 為什麼你覺得要是 0 ? 12/16 16:57
huhunhiaccc: 0只是打個比方 我想知道的是-1有沒有代表什麼意思 12/16 17:02
huhunhiaccc: 還是其他任何整數都可以 12/16 17:02
LPH66: 如果是其他人寫的函式庫程式碼, 它的文件裡一定會有解釋 12/16 17:17
LPH66: 這種事情你只能問寫的人他想表達什麼 12/16 17:17
ddavid: 這完全要看他整體是怎麼設計的 12/16 17:48
ddavid: 有的時候只是用-1表達某個意思,但有時可能是某種tricky用 12/16 17:50
ddavid: 法(比如呼叫者會拿來+1再往回丟之類的),這沒法只看這邊 12/16 17:50
ddavid: 得到結論 12/16 17:50
ddavid: 不過要我猜的話,我會猜這邊的-1只是拿來當error code,但 12/16 17:51
ddavid: 還是要強調這只是猜測 12/16 17:51
loveme00835: 你要有其他種類的回傳值存在, 才可能從用法推敲出各 12/16 18:25
loveme00835: 自扮演的角色為何 (通常是正交的) 12/16 18:25
ctrlbreak: 這code google的到,0以上都合法所以只能傳-1當錯誤吧XD 12/16 19:29
ddavid: 樓上這樣說很合理也很常見XD 12/17 16:01
ddavid: 願意使用exception的在這種情況可能就會選擇使用來做區別 12/17 16:42
kingofsdtw: 看個人寫作風格,嚴謹的程式會避免用-1,0 12/26 08:12
kingofsdtw: 當作true 12/26 08:14