[問題] return值的問題

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

Links booklink

Contact Us: admin [ a t ] ucptt.com