ಠ_ಠ
萬事問噗浪
是程式語言的問題,現在在上相關課程
我看不懂為什麼第三步k1經過s[0]-'0'能輸出成數字3?下面的ASCII是跟著抄的我也不太懂,0是對照到32的意思嗎,邏輯要死掉了
https://images.plurk.com/19SxXZVrvqL0d0ll1J9coD.jpg
ಠ_ಠ
可以的話希望能解釋得白話一點......程式語言真的好難
giant9076
是這樣的ASCII就是一個表,每一個文字都有他的編號,我記得英文是從65開始吧,這邊0的編號就是32
giant9076
nji3u3
giant9076
而s[0]是一個容器,裡面儲存了一個文字叫做三
giant9076
所以把三的編號35減掉零的編號32會得到3這個數字
giant9076
總之那個兩個字元相減的效果就是用兩個個字的編號去加減乘除的意思
bison2165
噗主先去查 什麼是ASCII 然後再往下想吧...
ಠ_ಠ
giant9076: 哦原來原來我懂了
所以'0'對應那個表的話會被轉成整數32,s[0]裡的字元"3"也會被轉成35,相減後的k1就會變成整數3,是這樣沒錯嗎
ಠ_ಠ
那被單引號或是雙引號的數字有差別嗎?像"3" 和 '0'這樣
bison2165
隨語言不同 有些分成char(字元) 跟 string(字串) 但要看使用的語言而定
ಠ_ಠ
bison2165: 目前主要是在學C語言,所以s[0]裡的3是被定義成char所以才用雙引號嗎,還是其實也能寫成單引號
bison2165
狐不是C專門 但狐的理解是 string = char array
s[0] 理論上是char 不是string(應該要用單引號)
但可能還是讓C專門的旅人解釋會好點
ಠ_ಠ
bison2165: 好的沒關係!我再翻一下上課筆記或找書看看,反正最苦惱的噗首問題有搞懂了,謝謝兩位旅人的幫忙
pigeon7069
其實string 中每個字元在c 語言上被單獨叫出的時候形式都是char
如果你用S[0]-"3"就可能出錯
因為'a'中只包含字母a ,但"a" 中其實包含a 及一空終止字符('\0')
你的第二點看起來只是展示他是如何運作而非實際跑一遍
那這個情況下我通常都隨便單引或雙引號(因為不會跑出來
載入新的回覆