以前、の記事の中で
「なぜ毎回sumを考える時に「-'0'」がつくのか分からない、という疑問を挙げていましたが
人に教えてもらうことでそれが解決しました。
ポイントはASCIIコードです。
http://www3.nit.ac.jp/~tamura/ex2/ascii.html
コンピュータは二進数しか扱えないため,文字データも二進数(つまり整数)として表現される.コンピュータは,ある二進数を特定の文字だと思いこんで処理する約束になっている.このような,文字を表現する二進数のことを特に文字コードと呼ぶ.
そこで,どの数値とどの文字を対応させるかを決めて,一覧表を作成することなる.現代のコンピュータでは標準的な文字コード表が決まっている.特にアルファベットと記号ではASCII(アスキー)コード表が使用される.
とのことなんですね。
この記事でsumを考えた時、対象として計算に用いていたのはあくまでstringでした。
これは数字ではなく文字列としての「1」とか「2」だったので、
ASCIIコード表を見ると
0 | 0x00 | |
1 | 0x01 | |
2 | 0x02 | |
3 | 0x03 |
・・・と、右側の文字列を足し引きしている状態になってしまっていたわけです。
でもよく見てみると、例えば数字の1は1の文字列から0の文字列を引いて作れます。