[問題] 八進制轉十進制

看板C_and_CPP作者 (蝙輻超人)時間15年前 (2010/06/05 11:07), 編輯推噓0(005)
留言5則, 1人參與, 最新討論串1/2 (看更多)
遇到的問題: (題意請描述清楚) #include<stdlib.h> #include<stdio.h> int main(void) { char *p,s[6]; int n=0; p=s; gets(p); while (*(p)!= '\0') { n=n*8+*p-'0'; //這一行看不懂.... p++; } printf("%d",n); system("pause"); } ======================================== 之前都是用power函數來解進制問題 不過看到這程式後覺得還蠻精簡的~只是關鍵的那一行不知道再做啥.... 再請指教囉~~感謝~~~ -- 阿嬤說:「人生不是得到,就是學到。」 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.187.52.246

06/05 11:14, , 1F
你應該是*p-'0'這邊看不懂吧?
06/05 11:14, 1F

06/05 11:15, , 2F
因為他S是宣告成字元,所以要取得裡面存的數值要減去
06/05 11:15, 2F

06/05 11:16, , 3F
0這個字元代表的編碼。你可以查到'0'是48,2是50。
06/05 11:16, 3F

06/05 11:17, , 4F
50-48=2,這樣就可以把他從CHAR轉成INT
06/05 11:17, 4F

06/05 11:17, , 5F
前面那個n*8只是把他左移一位。
06/05 11:17, 5F
感謝回覆~~不過倒不是*p-'0'這部份看不懂 而是假使我輸入的是八進制的12,那麼*p不是先指到 「1」嗎??然後左移一位??? 另外這樣要怎麼達成相乘8的1次方、2次方、3次方的效果呢??? 可能我的觀念有問題~再請不吝指教了~感恩~ ※ 編輯: saka037 來自: 218.187.52.246 (06/05 12:22)
文章代碼(AID): #1C2RzTmJ (C_and_CPP)
文章代碼(AID): #1C2RzTmJ (C_and_CPP)