[問題] 關於猜數字的判別方法

看板C_and_CPP作者 (86)時間14年前 (2010/05/26 20:52), 編輯推噓1(1014)
留言15則, 4人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 剛剛在作猜數字的問題的時候 搜尋了一下板上的文章,然後看到一個不太理解的問題 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dec-C++ 4.9.9.2 有問題的code: (請善用置底文標色功能) 看到有人使用下列方法來判斷數字正確與否 小細節已改成我需要的樣子 if ((number[0] - '0') == a1) { a++; } else if ((number[0] - '0') == a2 || (number[0] - '0') == a3 || (number[0] - '0') == a4){ b++; 程式會跑出我需要的結果 但是不太懂中間把0的ASCII code 減掉的意思 有大大能解釋一下或是給點方向 感激不盡 補充說明: 對於ASCII只使用過一次在改變字母的大小寫 但對於上述的程式碼卻不是很了解 有需要的話在把程式碼貼上來 謝謝各位的指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.242.187.147

05/26 20:55, , 1F
number[]是char 而減就是ASCII減 '9'-'0'=9 是這樣嗎?
05/26 20:55, 1F

05/26 20:57, , 2F
你可以把他想成是一個偏移量 扣掉那個偏移量才是你要的
05/26 20:57, 2F

05/26 20:59, , 3F
原本是一個'9' 扣掉了'0' 才是中間的差距 那才是你要的9
05/26 20:59, 3F

05/26 20:59, , 4F
要把 9 與 '9' 做比較 就必須這麼做
05/26 20:59, 4F

05/26 20:59, , 5F
不然就只是原本的'9'對應到的那個ascii code而已
05/26 20:59, 5F

05/26 21:00, , 6F
if (number[0] == (a1 + '0')) 這樣其實也可以
05/26 21:00, 6F

05/26 21:03, , 7F
能請問一下~~為啥原本是'9'嗎?
05/26 21:03, 7F

05/26 21:04, , 8F
9只是我舉例而已 重點是你直接拿char跟int比 他只會去比
05/26 21:04, 8F

05/26 21:04, , 9F
char依照ASCII CODE轉過去的碼而已 那不是你要的
05/26 21:04, 9F

05/26 21:04, , 10F
喔 我懂意思了 所以如果本來是'7' 減掉'0'才是我要的7
05/26 21:04, 10F

05/26 21:04, , 11F
是這樣意思對嗎?
05/26 21:04, 11F

05/26 21:05, , 12F
感謝上面解釋的大大們 現在懂了~理解比較慢..
05/26 21:05, 12F

05/26 21:05, , 13F
YES char本身跟int就有一種對照表ascii code
05/26 21:05, 13F

05/26 21:06, , 14F
依照那個對照表去處理才會是你要的
05/26 21:06, 14F

05/26 21:06, , 15F
感謝n大!!
05/26 21:06, 15F
文章代碼(AID): #1B_HcXKK (C_and_CPP)