[問題] 關於十進位轉二進位小問題

看板C_and_CPP作者 (wodada)時間11年前 (2013/04/20 19:43), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/1
末學自行寫了一個進位轉換問題 雖然寫出來了 但為了想更進一步了解其中一個指令用法 於是做了一個小小的變動 程式碼如下: #include <stdio.h> void printbin(unsigned int n); int main() { unsigned int num; while(scanf("%lu",&num)== 1) { printf("binary->"); printbin(num); putchar('\n'); } return 0; } void printbin(unsigned int n) { int digit; digit= n%2; if(n>=2) printbin(n/2); putchar('0'+digit); return ; } 本人用簡單遞迴所寫的 問題來了,如果我將倒數第二行(也就是putchar('0'+digit)) 改為putchar((char)digit) 此時執行會出現亂碼 可否告知小弟原因為何嗎??? 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.40.244

04/20 20:19, , 1F
ascii code 你要 (char) 後要加48
04/20 20:19, 1F

04/20 20:19, , 2F
putchar((char)digit +48);
04/20 20:19, 2F

04/20 20:27, , 3F
而 '0' 就是 48
04/20 20:27, 3F

04/20 21:18, , 4F
原來如此,謝謝!!
04/20 21:18, 4F
文章代碼(AID): #1HSdzyyG (C_and_CPP)