[問題] return值的問題

看板C_and_CPP (C/C++)作者 (chchch)時間4年前 (2020/12/16 16:27), 編輯推噓5(5022)
留言27則, 6人參與, 4年前最新討論串1/1
大家好 請問下面程式碼第五行為什麼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

12/16 16:29, 4年前 , 1F
你其他地方的回傳值分別是多少?
12/16 16:29, 1F

12/16 16:35, 4年前 , 2F
謝謝回覆 這個函式庫裡的函式除了宣告void的都是回
12/16 16:35, 2F

12/16 16:35, 4年前 , 3F
傳-1或是多項式的degree值還有一個確認是否為0多項
12/16 16:35, 3F

12/16 16:35, 4年前 , 4F
式的是回傳(1==1)
12/16 16:35, 4F

12/16 16:38, 4年前 , 5F
連 Polynomial_Print() 結尾也是回傳 -1? 因為 int
12/16 16:38, 5F

12/16 16:38, 4年前 , 6F
作為函式回傳值型別是很差的設計, 所以必須藉由程式
12/16 16:38, 6F

12/16 16:38, 4年前 , 7F
碼來推敲設計的目的以及合理性
12/16 16:38, 7F

12/16 16:54, 4年前 , 8F
第五行應該是檢查參數,排除不合理或不接受的參數
12/16 16:54, 8F

12/16 16:55, 4年前 , 9F
但為什麼是 return -1 要看註解或問原作者
12/16 16:55, 9F

12/16 16:56, 4年前 , 10F
畢竟從你剪下的片斷並沒辦法判斷正常應該是return什麼
12/16 16:56, 10F

12/16 16:57, 4年前 , 11F
所以你問為什麼不是 0,這個問題我也覺得摸不著頭腦
12/16 16:57, 11F

12/16 16:57, 4年前 , 12F
為什麼你覺得要是 0 ?
12/16 16:57, 12F

12/16 17:02, 4年前 , 13F
0只是打個比方 我想知道的是-1有沒有代表什麼意思
12/16 17:02, 13F

12/16 17:02, 4年前 , 14F
還是其他任何整數都可以
12/16 17:02, 14F

12/16 17:17, 4年前 , 15F
如果是其他人寫的函式庫程式碼, 它的文件裡一定會有解釋
12/16 17:17, 15F

12/16 17:17, 4年前 , 16F
這種事情你只能問寫的人他想表達什麼
12/16 17:17, 16F

12/16 17:48, 4年前 , 17F
這完全要看他整體是怎麼設計的
12/16 17:48, 17F

12/16 17:50, 4年前 , 18F
有的時候只是用-1表達某個意思,但有時可能是某種tricky用
12/16 17:50, 18F

12/16 17:50, 4年前 , 19F
法(比如呼叫者會拿來+1再往回丟之類的),這沒法只看這邊
12/16 17:50, 19F

12/16 17:50, 4年前 , 20F
得到結論
12/16 17:50, 20F

12/16 17:51, 4年前 , 21F
不過要我猜的話,我會猜這邊的-1只是拿來當error code,但
12/16 17:51, 21F

12/16 17:51, 4年前 , 22F
還是要強調這只是猜測
12/16 17:51, 22F

12/16 18:25, 4年前 , 23F
你要有其他種類的回傳值存在, 才可能從用法推敲出各
12/16 18:25, 23F

12/16 18:25, 4年前 , 24F
自扮演的角色為何 (通常是正交的)
12/16 18:25, 24F

12/16 19:29, 4年前 , 25F
這code google的到,0以上都合法所以只能傳-1當錯誤吧XD
12/16 19:29, 25F

12/17 16:01, 4年前 , 26F
樓上這樣說很合理也很常見XD
12/17 16:01, 26F

12/17 16:42, 4年前 , 27F
願意使用exception的在這種情況可能就會選擇使用來做區別
12/17 16:42, 27F
文章代碼(AID): #1VsSJ-LO (C_and_CPP)
文章代碼(AID): #1VsSJ-LO (C_and_CPP)