| 数値型と文字列型の演算 |
|
次に、数値型と文字列型が混合した場合を説明します。 この例を見てください。
想像通りの結果でしたか? 『“異なる型が含まれる式”の値の型は、先頭の項の型に合わせられる』ということでした。 先頭が "Lucky" という文字列型なので、最終的に文字列型になるわけです。 ここで、重要なのは、『ある型が異なる型に合わせられるときは、情報を出来る限り維持しようとする』ことです。 実数の場合を見れば明らかですね。
では逆を考えてみます。 整数の場合と実数の場合を、同時に表示してみました。
あれ? 文字列である "Lucky" や "HSP" はどこえ消えたのでしょう。 それぞれの式を見てください。 先頭の項は、整数型( 7 ) や 実数型( 3.0 ) で、いずれも数値型です。 つまり、式は数値型に合わせられるわけで、"Lucky" や "HSP" は数値の 0 に置き換えられたのです。 しかし、文字列型が数値型に合わせられるときは、必ず 0 になるわけではありません。
この場合は、先程とは違いますね。 しかしこれも、先程の例も含めて、 『ある型が異なる型に合わせられるときは、情報を出来る限り維持しようとする』という原理を考えれば理解できます。 7 + "650" の場合、HSPは "6" を 6 、"5" を 5 、"0" を 0 、最終的に "650" を 650 として考えます。 先程の "Lucky" の場合、 "L" を見て“これは数値型には置き換えられない”と判断し、 0 として考えたわけです。 このように、文字列型を数値型へ合わせるときは、先頭から数値へ置き換えていきます。 そして、数値型へ置き換えられない文字があった場合は、それ以降を無視します。
この例を見てください。 10 + "Hello, World!" は、"H" が数値に置き換えられないので 0 と判断し、それ以降は無視します。 つまり、 10 + 0 と同じです。 10 + "990" は、"9" を 9、"9" を 9、"0" を 0 、に置き換えます。 つまり、 10 + 990 と同じです。 10 + "355日" は、"3" を 3、"5" を 5、"5" を 5、に置き換えますが "日" は置き換えられませんので無視します。 つまり、 10 + 355 と同じです。 10 + "125abc9" は、"1" を 1、"2" を 2、"5" を 5、に置き換えますが、"a" は置き換えられないので、それ以降を無視します。 つまり、 10 + 125 と同じです。 型は、プログラマの目に見えないので、ミスの原因になることがよくあります。 重要ですので、しっかりと理解してから進んでください。 |