1+1=11は正しい答えである!

来月に4歳になるウチの長男に「1+1=?(1足す1は?)」と質問したところ、ちょっと考えた後に自信満々で「 11 」と答えた。その後、指を使って本来期待していた答えを導き出そうとして、長男に色々とレクチャーをしていたのだが、長男の答えがある意味正しいことに気づいてハッとした。

つまり、どういうことかと言うと、数式としては 1+1=2 が正解なのだが、文字列連結式としては、 1+1=11 が正解なのである。加算演算子である + が扱う値が数値型であるか、文字列型であるかで、その答えの値が変わってくるのだ。

ま、プログラム言語を知ってない人にとっては未知の解釈なんだろうが、例えばJavaScriptで次のように記述して実行してみると結果が如実に異なるのでわかりやすいかと。

数式 1+1=2 の計算

文字列連結式 1+1=11 の処理

代入式(a=1,b=1)や計算式(c=a+b)は一緒でも、計算式が実行される前に変数の値のキャストを数値型か文字列型かに切り替えるだけで結果が異なってくるのだ。まぁ、プログラミングやってる人にとっては当たり前の超基礎的な事なんだけど、一般教育では教わらない事なんで、世の中の大多数の人には理解に苦しむだろうね。

そんなこんなで、ウチの長男の「1+1=11」の答えは誤りでは全くないので、逆に「よくできた!」と誉めてあげました。さすがはエンジニアであるオレの息子だ(笑)

Leave a Reply

Your email address will not be published.