作者huhunhiaccc (chchch)
看板C_and_CPP
標題[問題] return值的問題
時間Wed Dec 16 16:27:40 2020
大家好
請問下面程式碼第五行為什麼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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1608107262.A.558.html
1F:→ loveme00835: 你其他地方的回傳值分別是多少? 12/16 16:29
2F:→ huhunhiaccc: 謝謝回覆 這個函式庫裡的函式除了宣告void的都是回 12/16 16:35
3F:→ huhunhiaccc: 傳-1或是多項式的degree值還有一個確認是否為0多項 12/16 16:35
4F:→ huhunhiaccc: 式的是回傳(1==1) 12/16 16:35
5F:→ loveme00835: 連 Polynomial_Print() 結尾也是回傳 -1? 因為 int 12/16 16:38
6F:→ loveme00835: 作為函式回傳值型別是很差的設計, 所以必須藉由程式 12/16 16:38
7F:→ loveme00835: 碼來推敲設計的目的以及合理性 12/16 16:38
8F:→ Schottky: 第五行應該是檢查參數,排除不合理或不接受的參數 12/16 16:54
9F:→ Schottky: 但為什麼是 return -1 要看註解或問原作者 12/16 16:55
10F:→ Schottky: 畢竟從你剪下的片斷並沒辦法判斷正常應該是return什麼 12/16 16:56
11F:→ Schottky: 所以你問為什麼不是 0,這個問題我也覺得摸不著頭腦 12/16 16:57
12F:→ Schottky: 為什麼你覺得要是 0 ? 12/16 16:57
13F:→ huhunhiaccc: 0只是打個比方 我想知道的是-1有沒有代表什麼意思 12/16 17:02
14F:→ huhunhiaccc: 還是其他任何整數都可以 12/16 17:02
15F:推 LPH66: 如果是其他人寫的函式庫程式碼, 它的文件裡一定會有解釋 12/16 17:17
16F:→ LPH66: 這種事情你只能問寫的人他想表達什麼 12/16 17:17
17F:推 ddavid: 這完全要看他整體是怎麼設計的 12/16 17:48
18F:→ ddavid: 有的時候只是用-1表達某個意思,但有時可能是某種tricky用 12/16 17:50
19F:→ ddavid: 法(比如呼叫者會拿來+1再往回丟之類的),這沒法只看這邊 12/16 17:50
20F:→ ddavid: 得到結論 12/16 17:50
21F:→ ddavid: 不過要我猜的話,我會猜這邊的-1只是拿來當error code,但 12/16 17:51
22F:→ ddavid: 還是要強調這只是猜測 12/16 17:51
23F:→ loveme00835: 你要有其他種類的回傳值存在, 才可能從用法推敲出各 12/16 18:25
24F:→ loveme00835: 自扮演的角色為何 (通常是正交的) 12/16 18:25
25F:推 ctrlbreak: 這code google的到,0以上都合法所以只能傳-1當錯誤吧XD 12/16 19:29
26F:推 ddavid: 樓上這樣說很合理也很常見XD 12/17 16:01
27F:推 ddavid: 願意使用exception的在這種情況可能就會選擇使用來做區別 12/17 16:42
28F:推 kingofsdtw: 看個人寫作風格,嚴謹的程式會避免用-1,0 12/26 08:12
29F:推 kingofsdtw: 當作true 12/26 08:14